คุณจัดทำเอกสารฐานข้อมูลของคุณอย่างไร?


227

ฉันพบว่าลูกค้าส่วนใหญ่ของฉันไม่ได้จัดทำเอกสารฐานข้อมูลของพวกเขาเลยและฉันพบว่ามันค่อนข้างน่ากลัว เพื่อแนะนำวิธีปฏิบัติที่ดีกว่านี้ฉันต้องการทราบว่าเครื่องมือ / กระบวนการที่ผู้คนใช้

  • คุณจัดทำเอกสารฐานข้อมูลของคุณอย่างไร (SQL Server)
  • คุณใช้เครื่องมืออะไร
  • Documentation Storage Format สำหรับ schema ฐานข้อมูล / meta-data หรือไม่
    • เอกสาร Word
    • สเปรดชีต Excel
    • ข้อความธรรมดา
  • กระบวนการเอกสารหรือนโยบาย?

ฉันไม่ได้พูดถึงวิศวกรรมย้อนกลับ / เอกสารฐานข้อมูลที่มีอยู่ แต่ส่วนใหญ่เกี่ยวกับแนวทางปฏิบัติที่ดีที่สุดของเอกสารในขณะที่คุณพัฒนาระบบ / ฐานข้อมูลของคุณ

คำตอบ:


78

ฉันใช้คุณสมบัติเพิ่มเติมเนื่องจากมีความยืดหยุ่นสูง เครื่องมือเอกสารมาตรฐานส่วนใหญ่สามารถถูกปิดMS_Descriptionและคุณสามารถใช้เครื่องมือของคุณเองได้

ดูงานนำเสนอนี้: # 41- รับคันโยกแล้วเลือกเต่า: ยกด้วยเมทาดาทา

และรหัสนี้: http://code.google.com/p/caderoux/wiki/LeversAndTurtles


3
คุณสามารถเปลี่ยนแปลงบางสิ่งและลืมเปลี่ยนคุณสมบัติเพิ่มเติมของคุณตามนั้นทำให้การแสดงนั้นไม่ถูกต้อง คุณสามารถตรวจสอบความคลาดเคลื่อนดังกล่าวโดยอัตโนมัติได้หรือไม่?
AK

2
อย่างน้อยที่สุดหนึ่งคนสามารถสืบค้นสกีมาฐานข้อมูล (sys.tables / sys.columns) และปล่อยให้เข้าร่วมกับคุณสมบัติเพิ่มเติม (sys.extended_properties) เพื่อระบุฟิลด์ที่ไม่มีเอกสารจากนั้นจึงเปลี่ยนสคริปต์นั้นเป็นแบบทดสอบเพื่อทำงานเมื่อปรับใช้
คาห์

59

ไมโครซอฟท์Visio Pro (ถึง Visio 2010) สามารถทำวิศวกรรมย้อนกลับฐานข้อมูลเป็นของ CA สามารถเออร์วิน Visio เป็นตัวเลือกที่ถูกกว่า แต่ ERwin เป็นตัวเลือกที่ละเอียดและสมบูรณ์กว่า คุณสมบัติเพิ่มเติมเป็นสิ่งที่ดีถ้าผู้คนสนใจที่จะดูพวกเขา คุณสามารถใช้เอกสาร Docของ Red Gate เพื่อส่งออกเอกสารในรูปแบบ HTML

ฉันพบอนุสัญญาการตั้งชื่อและการตั้งค่าคีย์ต่างประเทศอย่างเหมาะสมนำไปสู่ฐานข้อมูลที่จัดทำเอกสารด้วยตนเองเกือบ คุณยังควรมีเอกสารภายนอกเพื่อให้เข้าใจวัตถุประสงค์ได้ดีขึ้น


สิ่งที่สคีธรรมดามักจะขาดหายไป (แม้ในฐานข้อมูลที่มีชื่อดีและ foreign-keyed) คือคำอธิบายของฟิลด์ มันเป็นเรื่องแปลกในประสบการณ์ของฉันที่จะมีฟิลด์ทั้งหมดง่ายพอที่จะใส่ลงในชื่อคอลัมน์
StockB


26

สำหรับ SQL Server ฉันใช้คุณสมบัติเพิ่มเติม

ด้วยสคริปต์ PowerShell ต่อไปนี้ฉันสามารถสร้างสคริปต์สร้างตารางสำหรับตารางเดียวหรือสำหรับตารางทั้งหมดใน dbo schema

สคริปต์มีCreate tableคำสั่งคีย์หลักและดัชนี กุญแจต่างประเทศจะถูกเพิ่มเป็นความคิดเห็น คุณสมบัติเพิ่มเติมของตารางและคอลัมน์ตารางจะถูกเพิ่มเป็นความคิดเห็น รองรับคุณสมบัติหลายสาย

สคริปต์ถูกปรับให้เข้ากับสไตล์การเข้ารหัสส่วนบุคคลของฉัน

  • ไม่มีการตรวจสอบเดี่ยวสำหรับคอลัมน์เดี่ยว

  • ขณะนี้มันต้องการการรับรองความถูกต้องของเซิร์ฟเวอร์ SQL

นี่คือรหัสที่สมบูรณ์เพื่อเปลี่ยนคุณสมบัติที่ขยายเป็นเอกสาร ASCII แบบเก่าที่ดี (BTW เป็น sql ที่ถูกต้องในการสร้างตารางของคุณใหม่):

function Get-ScriptForTable
{
    param (
        $server, 
        $dbname,
        $user,
        $password,
        $filter
    )

[System.reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | out-null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.ConnectionInfo")  | out-null

$conn = new-object "Microsoft.SqlServer.Management.Common.ServerConnection" 
$conn.ServerInstance = $server
$conn.LoginSecure = $false
$conn.Login = $user
$conn.Password = $password
$conn.ConnectAsUser = $false
$srv = New-Object "Microsoft.SqlServer.Management.Smo.Server" $conn

$Scripter = new-object ("Microsoft.SqlServer.Management.Smo.Scripter")
#$Scripter.Options.DriAll = $false
$Scripter.Options.NoCollation = $True
$Scripter.Options.NoFileGroup = $true
$scripter.Options.DriAll = $True
$Scripter.Options.IncludeIfNotExists = $False
$Scripter.Options.ExtendedProperties = $false
$Scripter.Server = $srv

$database = $srv.databases[$dbname]
$obj = $database.tables

$cnt = 1
$obj | % {

    if (! $filter -or  $_.Name -match $filter)
    {
        $lines = @()
        $header = "---------- {0, 3} {1, -30} ----------"  -f $cnt, $_.Name
        Write-Host $header 

        "/* ----------------- {0, 3} {1, -30} -----------------"  -f $cnt, $_.Name
        foreach( $i in $_.ExtendedProperties)
        {
            "{0}: {1}" -f $i.Name, $i.value
        }
        ""
        $colinfo = @{}
        foreach( $i in $_.columns)
        {
            $info = ""
            foreach ($ep in $i.ExtendedProperties)
            {
                if ($ep.value -match "`n")
                {
                    "----- Column: {0}  {1} -----" -f $i.name, $ep.name
                    $ep.value
                }
                else
                {
                    $info += "{0}:{1}  " -f $ep.name, $ep.value
                }
            }
            if ($info)
            {
                $colinfo[$i.name] =  $info
            }
        }
        ""
        "SELECT COUNT(*) FROM {0}" -f $_.Name
        "SELECT * FROM {0} ORDER BY 1" -f $_.Name
        "--------------------- {0, 3} {1, -30} ----------------- */" -f $cnt, $_.Name
        ""
        $raw = $Scripter.Script($_)
        #Write-host $raw
        $cont = 0
        $skip = $false 
        foreach ($line in $raw -split "\r\n")
        {
            if ($cont -gt 0)
            {
                if ($line -match "^\)WITH ")
                {
                    $line = ")"
                }
                $linebuf += ' ' + $line -replace " ASC", ""
                $cont--
                if ($cont -gt 0) { continue }
            }
            elseif ($line -match "^ CONSTRAINT ")
            {
                $cont = 3
                $linebuf = $line
                continue
            }
            elseif ($line -match "^UNIQUE ")
            {
                $cont = 3
                $linebuf = $line
                $skip = $true
                continue
            }
            elseif ($line -match "^ALTER TABLE.*WITH CHECK ")
            {
                $cont = 1
                $linebuf = "-- " + $line
                continue
            }
            elseif ($line -match "^ALTER TABLE.* CHECK ")
            {
                continue
            }
            else
            {
                $linebuf = $line
            }
            if ($linebuf -notmatch "^SET ")
            {
                if ($linebuf -match "^\)WITH ")
                {
                    $lines += ")"
                }
                elseif ($skip)
                {
                    $skip = $false
                }
                elseif ($linebuf -notmatch "^\s*$")
                {
                    $linebuf = $linebuf -replace "\]|\[", ""
                    $comment = $colinfo[($linebuf.Trim() -split " ")[0]]
                    if ($comment) { $comment = ' -- ' + $comment }
                    $lines += $linebuf + $comment
                }
            }
        }
        $lines += "go"
        $lines += ""
        $block = $lines -join "`r`n"
        $block
        $cnt++
        $used = $false
        foreach( $i in $_.Indexes)
        {
            $out = ''
            $raw = $Scripter.Script($i)
            #Write-host $raw
            foreach ($line in $raw -split "\r\n")
            {
                if ($line -match "^\)WITH ")
                {
                    $out += ")"
                }
                elseif ($line -match "^ALTER TABLE.* PRIMARY KEY")
                {
                    break
                }
                elseif ($line -match "^ALTER TABLE.* ADD UNIQUE")
                {
                    $out += $line -replace "\]|\[", "" -replace " NONCLUSTERED", "" 
                }
                elseif ($line -notmatch "^\s*$")
                {
                    $out += $line -replace "\]|\[", "" -replace "^\s*", "" `
                    -replace " ASC,", ", " -replace " ASC$", "" `
                    <#-replace "\bdbo\.\b", "" #> `
                    -replace " NONCLUSTERED", "" 
                }
                $used = $true
            }
            $block = "$out;`r`ngo`r`n"
            $out
        }
        if ($used)
        {
            "go"
        }
    }
} 
}

คุณสามารถสคริปต์สมบูรณ์ dbo schema ของฐานข้อมูลที่กำหนด

Get-ScriptForTable 'localhost'  'MyDB' 'sa' 'toipsecret'  |  Out-File  "C:\temp\Create_commented_tables.sql"

หรือกรองสำหรับตารางเดียว

Get-ScriptForTable 'localhost'  'MyDB' 'sa' 'toipsecret' 'OnlyThisTable'

21

ลองดูที่SchemaCrawler - เป็นเครื่องมือบรรทัดคำสั่งฟรีที่ฉันออกแบบมาเพื่อทำสิ่งที่คุณกำลังมองหา SchemaCrawler สร้างไฟล์ข้อความที่มีวัตถุคีมาฐานข้อมูลทั้งหมด เอาท์พุทข้อความนี้ถูกออกแบบมาให้สามารถอ่านได้ทั้งมนุษย์และแตกต่างกับเอาท์พุตที่คล้ายกันจากเซิร์ฟเวอร์อื่น

ในทางปฏิบัติสิ่งที่ฉันได้พบคือการส่งออกไฟล์ข้อความของสคีมาฐานข้อมูลจะมีประโยชน์เมื่อทำในฐานะส่วนหนึ่งของบิลด์ ด้วยวิธีนี้คุณสามารถตรวจสอบไฟล์ข้อความลงในระบบควบคุมซอร์สโค้ดของคุณและมีประวัติรุ่นว่าสคีมาของคุณมีวิวัฒนาการไปอย่างไรเมื่อเวลาผ่านไป SchemaCrawler ได้รับการออกแบบให้ทำงานอัตโนมัติเช่นกันจากบรรทัดคำสั่ง


20

หากเคยมีการเขียนเอกสารประกอบประกอบด้วยเอกสารคำ จะรวมแผนภาพความสัมพันธ์สองสามรายการ รายการของตารางและคำอธิบายสั้น ๆ เกี่ยวกับสิ่งที่แต่ละตารางเก็บและความเกี่ยวข้องกับตารางอื่น ๆ บทหนึ่งของเอกสารประกอบด้วยการตั้งค่าความปลอดภัย: สิทธิ์ "ผู้ใช้" ที่แอปพลิเคชันต้องการคืออะไร

โดยทั่วไปใน บริษัท ที่ฉันเคยทำงานเอกสารฐานข้อมูลจะได้รับการเขียนเมื่อลูกค้าเป็นผู้ทำการตรวจสอบซึ่งมีแนวโน้มที่จะ จำกัด การใช้งานกับลูกค้าด้านการเงินและรัฐบาล

ข้อจำกัดความรับผิดชอบ: นักพัฒนาจำนวนมากเกินไปยอมรับว่ารหัสนั้นเป็นเอกสารประกอบและฉันก็รู้สึกผิดเช่นกัน


10
ปัญหาใหญ่ฉันพบกับเอกสารที่ไม่ผูกพันกับรหัส (เช่นเอกสาร Word แยกเมื่อเทียบกับไดอะแกรม schema ที่สร้างขึ้นโดยอัตโนมัติ + วัตถุฐานข้อมูลที่มีชื่ออย่างดี) คือเอกสารนี้รับประกันว่าจะผิดพลาด เวลาผ่านไป. เหตุผลง่าย: เอกสารแยกต่างหากทำซ้ำข้อมูลได้อย่างมีประสิทธิภาพ หากไม่มีวิธีอัตโนมัติในการซิงค์กับแหล่งที่มามันจะล้าสมัยอย่างรวดเร็ว เปรียบเทียบสิ่งนี้กับเครื่องมือที่สร้างไดอะแกรมสคีมาสดจากฐานข้อมูลและดึงความคิดเห็นที่เหมาะสมจากภายในโค้ด
Nick Chammas

16

ฉันใช้คุณสมบัติเพิ่มเติมและ SQL Doc ของ Red Gates ทำงานได้ดีมาก!


14

ตลกฉันสงสัยว่าคนอื่นจะทำสิ่งนี้ได้อย่างไรเช่นกัน ..

ในขณะที่พัฒนาโครงการฐานข้อมูลขนาดใหญ่ครั้งแรกของฉันฉันพบว่า Microsoft SQL Server Management Studio 10.0.1600.22 รองรับไดอะแกรมฐานข้อมูลซึ่งคุณสามารถส่งออกไปยังเอกสารคำหรือซอฟต์แวร์เอกสารอื่น ๆ ที่คุณสามารถเพิ่มรายละเอียดเอกสารได้มากเท่าที่คุณต้องการ เพียงแค่ขยายฐานข้อมูลที่คุณเชื่อมต่อกับ SQL Management Studio และคลิกขวาที่ "ไดอะแกรมฐานข้อมูล" ใน object explorer และเลือก "New Database Diagram" เพื่อสร้างไดอะแกรมแบบโต้ตอบซึ่งจะแสดงความสัมพันธ์ทั้งหมดระหว่างตารางที่แตกต่างกัน คุณสามารถระบุตารางที่คุณต้องการรวมไว้ในไดอะแกรมเพื่อที่ว่ารูปภาพจะไม่เกิดความผิดปกติหากคุณแค่พยายามจัดทำเอกสารทีละชิ้น ส่งออกภาพไปยังซอฟต์แวร์แก้ไขอื่น ๆ และแสดงความคิดเห็นเท่าที่คุณต้องการ

ฉันยังแนะนำมากมาย / comments / ในสคริปต์ที่สร้างฐานข้อมูลของคุณ

โดยทั่วไปแล้วเป็นงานที่ต้องจดบันทึกเป็นจำนวนมาก แต่เป็นความคิดที่ดีในระยะยาวเช่นเมื่อคุณหรือวิญญาณที่น่าสงสารคนอื่นกลับมาปรับปรุงการสร้างสรรค์ของคุณในอีกไม่กี่ปีต่อมา! :)


3
ฉันไม่ได้ใช้แผนภาพ SQL Server เป็นข้อ จำกัด ที่สำคัญต่างประเทศมีการเชื่อมต่อเพียงบางแห่งที่จะตารางเช่นนั้นจะทำในER-แผนภาพ ฉันชอบที่จะมีตัวเชื่อมต่อที่เชื่อมต่อกับเขตข้อมูลหลักและต่างประเทศที่สำคัญ
R. Schreurs


12

ฉันใช้เครื่องมือสร้างแบบจำลองข้อมูลเพราะพวกเขาอนุญาตให้ฉันจัดทำเอกสารข้อมูลสำคัญเกี่ยวกับฐานข้อมูลอื่นนอกเหนือจากที่ "เหมาะกับ" ในฐานข้อมูล ข้อมูลเมตาเช่นความเป็นส่วนตัว / ความปลอดภัย / ความอ่อนไหว, การดูแล, การควบคุม ฯลฯ

นั่นอาจเป็นมากกว่าสิ่งที่ต้องการในการจัดทำฐานข้อมูล แต่สิ่งเหล่านั้นมีความสำคัญต่อธุรกิจและช่วยให้พวกเขาจัดการข้อมูลของพวกเขา

เครื่องมือทางการก็ช่วยฉันในการจัดการข้อมูลที่เก็บไว้ในฐานข้อมูล / อินสแตนซ์ / เซิร์ฟเวอร์มากกว่าหนึ่งแห่ง สิ่งนี้ไม่เคยเป็นจริงมากกว่าในโลกใบสมัครของเรา


10

สำหรับ Documenting sql server ฉันขอแนะนำให้เพิ่งเปิดตัว:

เอกสารเซิร์ฟเวอร์ SQL & Windows ใช้ Windows PowerShellเขียนโดย Kendal Van Dyke

คำอธิบายสั้น ๆ จากลิงค์:

SQL Power Doc เป็นชุดของสคริปต์และโมดูล Windows PowerShell ที่ค้นหาจัดทำเอกสารและวินิจฉัยอินสแตนซ์ของ SQL Server และการกำหนดค่า Windows OS และเครื่องที่รองรับ SQL Power Doc ทำงานร่วมกับ SQL Server ทุกรุ่นจาก SQL Server 2000 ถึง 2012 และ Windows Server และผู้ใช้ระบบปฏิบัติการ Windows ทุกรุ่นจาก Windows 2000 และ Windows XP ถึง Windows Server 2012 และ Windows 8 SQL Power Doc ก็สามารถจัดทำเอกสารได้ ฐานข้อมูล Windows Azure SQL


10

ผู้สร้างพจนานุกรม DB

เป็นเครื่องมือเอกสารฐานข้อมูลโอเพ่นซอร์สที่มี GUI ที่เหมาะสมและตัวเลือกการส่งออก / นำเข้า มันใช้คุณสมบัติขยายเพื่อจัดเก็บเอกสาร นอกจากนี้ยังจะสร้างคำอธิบายอัตโนมัติสำหรับคอลัมน์คีย์หลักและคอลัมน์คีย์ต่างประเทศ


1
ต้องใช้. NET Framework 4.0 และใช้งานได้กับ SQL Server และ SQL Express เท่านั้น
kevinsky

8

อันที่จริงคุณสมบัติเพิ่มเติม (MS_Description) เป็นวิธีที่จะไป การมีคำอธิบายเหล่านี้เป็นส่วนหนึ่งของข้อมูลเมตาไม่เพียง แต่สามารถนำไปใช้กับเครื่องกำเนิดไฟฟ้าเอกสารเท่านั้น แต่ยังสามารถใช้เครื่องมือที่ให้ "intellisense" (เช่นหวังว่าวันหนึ่ง) โดยใช้เครื่องมือเช่น "Intellisense" เช่น SQL Assistant http://www.softtreetech.com/ isql.htm (ครั้งสุดท้ายที่ฉันตรวจสอบพวกเขาไม่ได้) หรือสร้างขึ้นใน Intellisense ของ SQL Sever Management Studio (ตั้งแต่ sql2008)

ฉันยังเชื่อว่าควรง่ายสำหรับผู้พัฒนาและ DBA ที่จะเพิ่มบันทึกย่อเหล่านี้เพราะในขณะที่ Tangurena และ Nick Chammas ชี้ให้เห็นอย่างถูกต้อง - devs ลังเลที่จะปรับปรุงเอกสารให้ทันสมัยและเกลียดงานซ้ำซ้อน - ซึ่งยุติธรรมพอโดยเฉพาะสำหรับผู้สอน เพื่อเพิ่มประสิทธิภาพของสิ่งต่าง ๆ ตลอดชีวิตการทำงาน ดังนั้นหากเป็นการง่ายที่จะอัปเดตเอกสารในที่เดียวใกล้กับซอร์สโค้ด - มันจะไม่ทำงาน เมื่อถึงจุดหนึ่งฉันค้นหาเว็บและไม่พบวิธีแก้ไขปัญหานี้ดังนั้นฉันจึงเขียน LiveDoco (ไม่ต้องขอโทษด้วย) เพื่อพยายามทำให้ง่ายขึ้น ข้อมูลเพิ่มเติมที่นี่ถ้าสนใจ: http://www.livedoco.com/why-livedoco


7

นอกจากนี้คุณยังอาจจะใช้เวลาดูที่wsSqlSrvDoc มันเป็นเครื่องมือเล็ก ๆ น้อย ๆ ที่ใช้งานได้กับ SQL Server คุณสมบัติเพิ่มเติมและสร้างเอกสาร MS Word

การพิมพ์คุณสมบัติคอลัมน์ทั้งหมด (ที่มีความสัมพันธ์กับคีย์ต่างประเทศ) ทำงานนอกกรอบ สำหรับคำอธิบายเพิ่มเติมในแต่ละฟิลด์คุณต้องตั้งค่าคุณสมบัติเพิ่มเติมของคอลัมน์เหล่านั้นใน SQL Server Management Studio

มันไม่ฟรี แต่ราคาไม่แพงมาก หากคุณเพียงแค่ต้องสร้างเอกสารสำหรับฐานข้อมูล "ไม่ทำงานอยู่ในระหว่างดำเนินการ" นั่นก็เสร็จแล้วมากหรือน้อยกว่าจะเพียงพอที่จะใช้การทดลองใช้ฟรี

เว็บไซต์เครื่องมือ


5

เราใช้Dataedoเพื่อสร้างพจนานุกรมข้อมูลขั้นตอนการจัดเก็บเอกสารและฟังก์ชั่น เราวาง ERD ที่สร้างใน Visio เอกสารทั้งหมดถูกเก็บไว้ในที่เก็บข้อมูลเมตาดาต้า (ข้อความที่จัดรูปแบบ) และเราส่งออกเป็น HTML สำหรับใช้ภายในหรือส่งออกเป็น PDF สำหรับเอกสารที่พิมพ์

เรากำหนดแต่ละวัตถุให้กับโมดูลและกำหนดแต่ละโมดูลให้กับบุคคล Dataedo มาพร้อมกับการรายงานสถานะเอกสารเพื่อให้เราสามารถบอกได้ว่ามีคอลัมน์หรือตารางใหม่ที่ต้องมีการบันทึกหรือไม่


1

คุณสามารถใช้--ความคิดเห็นที่ได้รับการแก้ไขปกติใน.sqlไฟล์

ประโยชน์ที่ได้รับรวมถึงเอกสารประกอบที่มีรหัสสำหรับสคีมาฐานข้อมูลและคุณสามารถส่งไปยังระบบควบคุมเวอร์ชันเช่นGitได้อย่างง่ายดาย

ตัวอย่าง:

-- Table to store details about people.
-- See also: The customer table.
-- Note: Keep this data safe!
-- Todo: Add a email column.
CREATE TABLE Persons ( -- People in the registry
    PersonID int,
    LastName varchar(255), -- The person's last name
    FirstName varchar(255), -- The person's first name
    Address varchar(255), -- Address of residence
    City varchar(255) -- City of residence
);

บางทีคุณก็สามารถใช้ XML ได้เช่นกัน

-- <summary>
-- Table to store details about people.
-- </summary>
-- <column name="PersonID">The id column.</column>
-- <column name="LastName">The person's last name.</column>
-- <column name="FirstName">The person's first name.</column>
-- <column name="Address">Address of residence.</column>
-- <column name="City">City of residence.</column>
CREATE TABLE Persons (
    PersonID int,
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
);

นอกจากนี้คุณยังสามารถใช้ไวยากรณ์บางคนที่มีความคล้ายคลึงกันของjsDoc / PHPDoc

-- Table to store details about people.
-- @column {int} PersonID - The id column.
-- @column {varchar} LastName - The person's last name.
-- @column {varchar} FirstName - The person's first name.
-- @column {varchar} Address - Address of residence.
-- @column {varchar} City - City of residence.
-- @see {@link https://example.com/|Example}
-- @author Jane Smith <jsmith@example.com>
-- @copyright Acme 2018
-- @license BSD-2-Clause
-- @todo Add a column for email address.
-- @since 1.0.1
-- @version 1.2.3
CREATE TABLE Persons (
    PersonID int,
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
);

หรือคุณสามารถใช้ไวยากรณ์ของ MarkDown

-- # Persons
-- Table to store details about **people**.
-- * `PersonID` - The id column.
-- * `LastName` - The person's _last_ name.
-- * `FirstName` - The person's _first_ name.
-- * `Address` - Address of residence.
-- * `City` - City of residence.
--
-- [I'm an inline-style link](https://www.example.com/)
--
-- | PersonID | LastName | FirstName | Address | City |
-- | ---------| -------- | --------- | ------- | ---- |
-- | 1        | Smith    | Jane      | N/A     | N/A  |
CREATE TABLE Persons (
    PersonID int,
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
);

1

แผนภาพ ERD (ไดอะแกรมฐานข้อมูล)เป็นโปรแกรมที่มีประโยชน์ที่สุดสำหรับทีมของฉันเสมอ

แต่มีกฎในการเขียน " Decription " ในPropertiesของแต่ละตารางและคอลัมน์ที่เราสร้าง

จากนั้นเราก็ใช้ชื่อซอฟต์แวร์ที่เป็นสถาปนิก Enterpriseเพื่อจัดทำเอกสารTablesที่มีทั้งหมดIndexes, Foreign KeysและColumnsด้วยTypeและคำอธิบาย

ป้อนคำอธิบายรูปภาพที่นี่


-1

สำหรับ MySQL โดยเฉพาะอย่างยิ่งเรามักจะใช้MySQL Workbench เราสร้างการออกแบบฐานข้อมูลของเราในผู้ออกแบบแล้วส่งออกเป็นสคริปต์ SQL ที่รันได้ การใช้การเปลี่ยนแปลงทั้งหมดในการออกแบบจากนั้นเรียกใช้สคริปต์ที่สร้างขึ้นเพื่อให้แน่ใจว่าการออกแบบและฐานข้อมูลที่แท้จริงนั้นมีความสอดคล้องกันอย่างสมบูรณ์แบบและเอกสารจะไม่ล้าสมัยอย่างง่ายดาย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.