आप अपने डेटाबेस का दस्तावेज कैसे बनाते हैं?


227

मुझे लगता है कि मेरे अधिकांश ग्राहक अपने डेटाबेस का दस्तावेजीकरण नहीं कर रहे हैं और मुझे यह बहुत डरावना लगता है। कुछ बेहतर अभ्यास शुरू करने के लिए, मैं जानना चाहूंगा कि लोग कौन से उपकरण / प्रक्रिया का उपयोग कर रहे हैं।

  • आप अपने डेटाबेस का दस्तावेज़ कैसे बनाते हैं? (एस क्यू एल सर्वर)
  • आप किस टूल का उपयोग करते हैं?
  • डेटाबेस स्कीमा / मेटा-डेटा के लिए प्रलेखन संग्रहण प्रारूप?
    • शब्द दस्तावेज़
    • एक्सेल स्प्रेडशीट
    • सादे पाठ
  • प्रलेखन प्रक्रिया या नीतियां?

मैं किसी मौजूदा डेटाबेस के बारे में रिवर्स इंजीनियरिंग / दस्तावेज़ के बारे में बात नहीं कर रहा हूँ, लेकिन मुख्य रूप से आपके सिस्टम / डेटाबेस को विकसित करते समय प्रलेखन सर्वोत्तम प्रथाओं पर।

जवाबों:


78

मैं विस्तारित गुणों का उपयोग कर रहा हूं क्योंकि वे बहुत लचीले हैं। अधिकांश मानक प्रलेखन उपकरण बंद किए जा सकते हैं MS_Description, और फिर आप कस्टम-निर्मित टूल के साथ अपना खुद का उपयोग कर सकते हैं।

इस प्रस्तुति को देखें: # 41-एक लीवर प्राप्त करें और किसी भी कछुए को चुनें: मेटाडाटा के साथ उठाना

और यह कोड: http://code.google.com/p/caderoux/wiki/LeversAndTurtles


3
आप कुछ बदल सकते हैं और अपने विस्तारित गुणों को तदनुसार बदलना भूल सकते हैं, उन्हें गलत तरीके से प्रस्तुत कर सकते हैं। क्या आप स्वचालित रूप से ऐसी विसंगतियों का पता लगा सकते हैं?
एके

2
बहुत कम से कम, कोई डेटाबेस स्कीमा (sys.tables / sys.columns) को क्वेरी कर सकता है और अपने विस्तारित गुणों (sys.extended_properties) में शामिल होने के लिए अनिर्दिष्ट क्षेत्रों की पहचान कर सकता है, फिर तैनाती करते समय चलाने के लिए उस स्क्रिप्ट को परीक्षण में बदल दें।
मीका

59

Microsoft का Visio Pro (Visio 2010 तक) CA के ERwin के रूप में एक डेटाबेस को रिवर्स कर सकता है । Visio सबसे सस्ता विकल्प है, लेकिन ERwin अधिक विस्तृत, अधिक संपूर्ण विकल्प है। विस्तारित गुण अच्छे हैं, अगर लोग उन्हें देखने के लिए परेशान करते हैं। आप HTML फॉर्मेट में आउटपुट डॉक्यूमेंटेशन के लिए रेड गेट के एसक्यूएल डॉक जैसे कुछ का उपयोग कर सकते हैं ।

मैं नामकरण सम्मेलनों का पता लगाता हूं और विदेशी कुंजियों को ठीक से स्थापित करने के लिए लगभग स्व-दस्तावेजीकरण डेटाबेस का नेतृत्व करता हूं । उद्देश्य की बेहतर समझ के लिए आपके पास अभी भी कुछ बाहरी डॉक्स होने चाहिए।


एक साधारण स्कीमा अक्सर गायब होता है (यहां तक ​​कि एक अच्छी तरह से नामित और विदेशी-कुंजी डेटाबेस में) खेतों का वर्णन है। यह मेरे अनुभव में असामान्य है कि सभी क्षेत्रों को स्तंभ नाम में फिट करने के लिए पर्याप्त सरल है।
19


26

SQL सर्वर के लिए मैं विस्तारित गुणों का उपयोग कर रहा हूँ।

निम्नलिखित PowerShell स्क्रिप्ट के साथ मैं एकल तालिका के लिए या dbo स्कीमा में सभी तालिकाओं के लिए तालिका स्क्रिप्ट बना सकता हूं।

स्क्रिप्ट में एक 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 स्कीमा को स्क्रिप्ट कर सकते हैं

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

या एक ही टेबल के लिए फ़िल्टर करें

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

21

स्कीमा क्रॉलर पर एक नज़र डालें - यह मेरा मुफ्त, कमांड-लाइन टूल है जिसे मैंने आपको करने के लिए डिज़ाइन किया है। स्कीमा क्रॉलर डेटाबेस स्कीमा ऑब्जेक्ट के सभी के साथ एक टेक्स्ट फ़ाइल का उत्पादन करता है। यह टेक्स्ट आउटपुट मानव-पठनीय दोनों के साथ-साथ किसी अन्य सर्वर से समान आउटपुट के विरुद्ध भिन्न-सक्षम होने के लिए डिज़ाइन किया गया है।

व्यवहार में, मैंने जो पाया है वह यह है कि डेटाबेस स्कीमा की एक पाठ फ़ाइल का आउटपुट उपयोगी होता है, जब बिल्ड के हिस्से के रूप में किया जाता है। इस तरह, आप अपने स्रोत कोड नियंत्रण प्रणाली में पाठ फ़ाइल की जांच कर सकते हैं, और आपके स्कीमा समय के साथ कैसे विकसित हुए इसका एक संस्करण इतिहास है। स्कीमा क्रॉलर को कमांड-लाइन से इसे भी स्वचालित करने के लिए डिज़ाइन किया गया है।


20

यदि यह कभी लिखा गया है, तो दस्तावेज़ में एक शब्द दस्तावेज़ होता है। संबंध आरेखों के एक जोड़े को शामिल किया जाएगा। तालिकाओं की सूची और एक संक्षिप्त विवरण जो प्रत्येक तालिका रखती है और यह अन्य तालिकाओं से कैसे संबंधित है। दस्तावेज़ीकरण के एक अध्याय में सुरक्षा सेटिंग्स शामिल हैं: एप्लिकेशन को "उपयोगकर्ता" की क्या अनुमतियां चाहिए?

आमतौर पर, मैंने जिन कंपनियों के लिए काम किया है, डेटाबेस प्रलेखन केवल तभी लिखा जाता है जब ग्राहक वह होता है जो ऑडिट करता है, जो वित्तीय और सरकारी ग्राहकों के लिए इसके उपयोग को सीमित करता है।

डिस्क्लेमर: अभी तक बहुत सारे डेवलपर्स ने यह रवैया अपनाया कि कोड प्रलेखन है , और मैं इसके लिए दोषी भी हूं।


10
एक बड़ी समस्या मुझे ऐसे दस्तावेज से मिलती है जो कोड के साथ बंधे नहीं होते हैं (जैसे एक अलग वर्ड डॉक्यूमेंट, जैसा कि ऑटो-जनरेट किए गए स्कीमा आरेख + नामांकित डेटाबेस ऑब्जेक्ट्स के विपरीत) यह है कि यह डॉक्युमेंटेशन फ्लैट के गलत होने की गारंटी है। समय गुजरता। कारण सरल है: एक अलग दस्तावेज़ प्रभावी रूप से जानकारी की नकल करता है। स्रोत के साथ तालमेल रखने के लिए एक स्वचालित तरीके के बिना , यह बहुत जल्दी अप्रचलित हो जाएगा। इसकी तुलना उस टूल से करें जो डेटाबेस से एक स्कीमा आरेख बनाता है और कोड के भीतर से उपयुक्त टिप्पणियों को खींचता है।
निक चामास

16

मैं विस्तारित गुणों और रेड गेट्स एसक्यूएल डॉक्टर का उपयोग करता हूं। बहुत अच्छा काम करता है!


14

मजेदार, मैं सोच रहा था कि अन्य लोग भी ऐसा कैसे कर रहे हैं ..

अपने पहले बड़े डेटाबेस प्रोजेक्ट को विकसित करते हुए, मैंने पाया कि Microsoft SQL Server Management Studio 10.0.1600.22 डेटाबेस आरेखों का समर्थन करता है, जिसे आप किसी शब्द दस्तावेज़ या अन्य दस्तावेज़ सॉफ़्टवेयर में निर्यात कर सकते हैं जहाँ आप अपनी इच्छानुसार अधिक से अधिक दस्तावेज़ीकरण जोड़ सकते हैं। SQL प्रबंधन स्टूडियो पर आपके द्वारा कनेक्ट किए गए डेटाबेस का विस्तार करें और ऑब्जेक्ट एक्सप्लोरर में "डेटाबेस आरेख" पर राइट क्लिक करें और इंटरएक्टिव आरेख उत्पन्न करने के लिए "नया डेटाबेस आरेख" चुनें जो विभिन्न तालिकाओं के बीच सभी रिश्तों को दिखाएगा। आप यह भी निर्दिष्ट कर सकते हैं कि आप किन तालिकाओं को आरेखों में शामिल करना चाहते हैं, ताकि छवि अनजाने में न हो जाए यदि आप इसे टुकड़ा द्वारा टुकड़ा करने का प्रयास कर रहे हैं। छवि को किसी अन्य संपादन सॉफ़्टवेयर में निर्यात करें और जितनी चाहें उतनी टिप्पणी करें।

मैं स्क्रिप्ट में बहुत सारे / टिप्पणियों / अनुशंसा करता हूं जो आपके डेटाबेस को उत्पन्न करता है।

आम तौर पर यह लिखने के लिए बहुत काम है कि यह सब क्या है, लेकिन दीर्घकालिक के लिए एक अच्छा विचार, जैसे कि जब आप या कोई अन्य गरीब आत्मा कुछ साल बाद अपनी रचना को अपडेट करने के लिए वापस आती है! :)


3
मैं SQL सर्वर आरेखों का उपयोग नहीं करता हूं, क्योंकि विदेशी कुंजी बाधाएं केवल तालिकाओं से कहीं न कहीं जुड़ी हुई हैं, जैसे कि यह ईआर-आरेख में किया जाता है । मैं प्राथमिक और विदेशी प्रमुख क्षेत्रों को जोड़ने वाले कनेक्टर्स रखना पसंद करता हूं।
आर। श्रेयर्स

13

मैंने सभी वस्तुओं के लिए MS_description विस्तारित संपत्ति सेट की और फिर ApexSQL Doc का उपयोग करके पूरे डेटाबेस का दस्तावेज़ तैयार किया । मैं पहले HTML दस्तावेज़ बनाता था, लेकिन हाल ही में मैं पीडीएफ पसंद करता हूं


12

मैं डेटा मॉडलिंग टूल का उपयोग करता हूं क्योंकि वे मुझे डेटाबेस के बारे में महत्वपूर्ण जानकारी का दस्तावेजीकरण करने की अनुमति देते हैं जो डेटाबेस में "फिट" के अलावा है। मेटा डेटा जैसे प्राइवेसी / सिक्योरिटी / सेंसिटिविटी सरोकार, स्टडीशिप, गवर्नेंस आदि।

एक डेटाबेस को दस्तावेज करने में कुछ की जरूरत से परे जा सकते हैं, लेकिन वे चीजें व्यवसाय के लिए महत्वपूर्ण हैं और उन्हें अपने डेटा को प्रबंधित करने में मदद करती हैं।

औपचारिक टूल मुझे एक से अधिक डेटाबेस / इंस्टेंस / सर्वर में संग्रहीत डेटा को प्रबंधित करने में भी मदद करते हैं। यह हमारे पैकेज्ड एप्लिकेशन वर्ल्ड की तुलना में कभी अधिक सच नहीं रहा है।


10

एसक्यूएल सर्वर के दस्तावेज के लिए, मैं अभी हाल ही में जारी की गई अत्यधिक सलाह देता हूं:

SQL सर्वर और विंडोज डॉक्यूमेंटेशन Kendal Van Dyke द्वारा लिखित Windows PowerShell का उपयोग कर रहा है

लिंक से संक्षिप्त विवरण:

SQL पॉवर डॉक विंडोज पॉवरशेल स्क्रिप्ट और मॉड्यूल का एक संग्रह है जो SQL सर्वर इंस्टेंस और उनके अंतर्निहित विंडोज ओएस और मशीन कॉन्फ़िगरेशन की खोज, दस्तावेज़ और निदान करता है। SQL Power Doc 2012 के माध्यम से SQL Server 2000 से SQL सर्वर के सभी संस्करणों के साथ काम करता है, और Windows Server 2012 और Windows XP के माध्यम से Windows 2000 और Windows XP से Windows सर्वर और उपभोक्ता Windows ऑपरेटिंग सिस्टम के सभी संस्करणों में भी काम करने में सक्षम है। Windows Azure SQL डेटाबेस।


10

DB शब्दकोश निर्माता

सभ्य GUI और निर्यात / आयात विकल्प के साथ एक खुला स्रोत डेटाबेस प्रलेखन उपकरण है। यह प्रलेखन को संग्रहीत करने के लिए विस्तारित गुणों का उपयोग करता है। यह प्राथमिक कुंजी कॉलम और विदेशी कुंजी कॉलम के लिए स्वचालित विवरण भी उत्पन्न करेगा।


1
.NET फ्रेमवर्क 4.0 की आवश्यकता है और केवल
kevinsky

8

वास्तव में, विस्तारित गुण (MS_Description) जाने का रास्ता है। मेटाडेटा के एक हिस्से के रूप में आसानी से उपलब्ध इन विवरणों का उपयोग न केवल डॉक्स जनरेटर द्वारा किया जा सकता है, बल्कि (उम्मीद है कि एक दिन) उन टूल द्वारा भी किया जा सकता है जो उदाहरण के लिए "सॉफ्टलाइन" प्रदान करते हैं, उदाहरण के लिए उत्कृष्ट सॉफ्टट्री के एसक्यूएल असिस्टेंट http://www.softpreetech.com/ isql.htm (पिछली बार जब मैंने जाँच की थी कि वे नहीं थे) या SQL गंभीर प्रबंधन स्टूडियो के इन्टेलिसेंस में बनाया गया था (क्योंकि sql2002 से)

मेरा यह भी मानना ​​है कि इन नोटों को जोड़ना देवों और डीबीए के लिए आसान होना चाहिए क्योंकि चूंकि तंगुरेना और निक चामास ने सही ढंग से बताया है - देवता डॉक्स को अद्यतन रखने और डुप्लिकेट कार्य से घृणा करने के लिए बहुत अनिच्छुक हैं - जो विशेष रूप से सिखाया गया व्यक्ति के लिए पर्याप्त रूप से उचित है। अपने पूरे पेशेवर जीवन के दौरान चीजों को अनुकूलित करने के लिए। इसलिए जब तक कि सोर्स कोड के करीब एक स्थान पर डॉक्स अपडेट करना वास्तव में आसान न हो - यह काम नहीं करने वाला है। कुछ बिंदु पर मैंने वेब खोजा और इसका हल नहीं खोजा, इसलिए मैंने इसे आसान बनाने के प्रयास में LiveDoco (फ्री, सॉरी) नहीं लिखा। अधिक जानकारी यहाँ अगर रुचि: http://www.livedoco.com/why-livedoco


7

आप wsSqlSrvDoc पर भी नज़र डाल सकते हैं । यह एक अच्छा सा उपकरण है जो SQL सर्वर विस्तारित गुणों के साथ काम करता है और एक MS Word दस्तावेज़ बनाता है।

सभी स्तंभ गुणों का प्रिंट-आउट (विदेशी कुंजी संबंधों के साथ) बॉक्स से बाहर काम करता है। प्रत्येक फ़ील्ड पर आगे के विवरणों के लिए आपको SQL सर्वर प्रबंधन स्टूडियो में उन स्तंभों के विस्तारित गुणों को सेट करना होगा।

यह मुफ़्त नहीं है लेकिन काफी सस्ती है। अगर आपको सिर्फ "प्रगति में काम नहीं करना" डीबी के लिए एक दस्तावेज बनाने की आवश्यकता है जो कि नि: शुल्क परीक्षण का उपयोग करने के लिए पर्याप्त या कम है।

टूल वेबसाइट


5

डेटा डिक्शनरी, दस्तावेज़ संग्रहीत कार्यविधियाँ और फ़ंक्शंस बनाने के लिए हम डेटेडो का उपयोग करते हैं। हम Visio में बनाई गई ERDs पेस्ट करते हैं। सभी दस्तावेज डेटाडो मेटाडेटा रिपॉजिटरी (स्वरूपित पाठ) में संग्रहीत हैं और हम इसे HTML में आंतरिक उपयोग के लिए निर्यात करते हैं या मुद्रित दस्तावेज़ के लिए पीडीएफ में निर्यात करते हैं।

हम प्रत्येक ऑब्जेक्ट को एक मॉड्यूल के साथ असाइन करते हैं और प्रत्येक मॉड्यूल को एक व्यक्ति को असाइन करते हैं। डेटाडो डॉक्यूमेंटेशन स्टेटस रिपोर्टिंग के साथ आता है इसलिए हम बता सकते हैं कि क्या कोई नया कॉलम या टेबल है जिसे डॉक्यूमेंट करने की आवश्यकता है।


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)
);

या आप मार्कडाउन सिंटैक्स का उपयोग कर सकते हैं।

-- # 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

ईआरडी डायग्राम (डेटाबेस डायग्राम) हमेशा मेरी टीम के लिए सबसे उपयोगी थे

लेकिन प्रत्येक तालिका और कॉलम के गुणों में " कमी " लिखने का नियम है जो हम बनाते हैं।

फिर हम एक सॉफ्टवेयर नाम का उपयोग एंटरप्राइज आर्किटेक्ट को Tablesसभी के साथ Indexes, Foreign Keysऔर Columnsसाथ Typeऔर विवरण के साथ करने के लिए करते हैं ।

यहां छवि विवरण दर्ज करें


-1

विशेष रूप से MySQL के लिए, हम हमेशा MySQL कार्यक्षेत्र का उपयोग करते हैं । हम अपने डेटाबेस डिज़ाइन को डिज़ाइनर में बनाते हैं, फिर इसे रन करने योग्य SQL स्क्रिप्ट के रूप में निर्यात करते हैं। डिज़ाइन में सभी बदलावों को लागू करना और फिर उत्पन्न स्क्रिप्ट को चलाना यह सुनिश्चित करता है कि डिज़ाइन और वास्तविक डेटाबेस एक दूसरे के साथ पूरी तरह से मेल खाते हैं, और यह कि प्रलेखन आसानी से पुराना नहीं होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.