আপনি কীভাবে আপনার ডাটাবেস নথি করবেন?


227

আমি দেখতে পেয়েছি যে আমার বেশিরভাগ ক্লায়েন্টরা তাদের ডেটাবেসগুলি মোটেই ডকুমেন্ট করছে না এবং আমি এটি দেখতে খুব ভয়ঙ্কর মনে করি। আরও কিছু ভাল অনুশীলন প্রবর্তনের জন্য, আমি জানতে চাই যে লোকেরা কী কী সরঞ্জাম / প্রক্রিয়া ব্যবহার করছে।

  • আপনি কীভাবে আপনার ডাটাবেস নথি করবেন? (SQL সার্ভার)
  • আপনি কোন সরঞ্জামটি ব্যবহার করেন?
  • ডকুমেন্টেশন স্টোরেজ ফর্ম্যাট ডাটাবেস স্কিমা / মেটা-ডেটা জন্য?
    • শব্দ নথি
    • এক্সেল স্প্রেডশিট
    • সাধারণ পাঠ্য
  • ডকুমেন্টেশন প্রক্রিয়া বা নীতিমালা?

আমি কোনও বিদ্যমান ডাটাবেস বিপরীত প্রকৌশল / নথির কথা বলছি না, তবে প্রধানত ডকুমেন্টেশন সেরা পদ্ধতির উপর যখন আপনি আপনার সিস্টেম / ডাটাবেস বিকাশ করেন।

উত্তর:


78

তারা প্রচ্ছদযুক্ত বৈশিষ্ট্যগুলি খুব নমনীয় হওয়ার কারণে ব্যবহার করছি। বেশিরভাগ স্ট্যান্ডার্ড ডকুমেন্টেশন সরঞ্জামগুলি চালিত করা যায় MS_Descriptionএবং তারপরে আপনি কাস্টম-বিল্ট সরঞ্জামগুলির সাহায্যে নিজের ব্যবহার করতে পারেন।

এই উপস্থাপনাটি দেখুন: # 41-একটি লিভার পান এবং যে কোনও কচ্ছপ বাছুন: মেটাডেটা সহ উত্তোলন

এবং এই কোড: http://code.google.com/p/caderoux/wiki/LeversAndTurtles


3
আপনি কোনও কিছু পরিবর্তন করতে পারেন এবং সেই অনুসারে আপনার প্রসারিত বৈশিষ্ট্যগুলিকে ভুল রেন্ডারিং করতে ভুলে যেতে পারেন। আপনি কি স্বয়ংক্রিয়ভাবে এই ধরনের ত্রুটিগুলি সনাক্ত করতে পারেন?
একে

2
খুব কমপক্ষে, কেউ ডাটাবেস স্কিমা (sys.tables / sys.col থাম) জিজ্ঞাসা করতে পারে এবং অনির্ধারিত ক্ষেত্রগুলি সনাক্ত করতে তার বর্ধিত বৈশিষ্ট্যগুলিতে (sys.extended_properties) যোগ করতে পারে, তারপরে মোতায়েনের সময় চালানোর জন্য সেই স্ক্রিপ্টটিকে পরীক্ষায় পরিণত করে।
মীখা

59

মাইক্রোসফ্টের ভিজিও প্রো (ভিজিও ২০১০ অবধি) সিএর ইআরউইন হিসাবে ইঞ্জিনিয়ারদের একটি ডাটাবেসকে বিপরীত করতে পারে । ভিসিও সস্তা বিকল্প, তবে ইআরউইন আরও বিশদ, আরও সম্পূর্ণ বিকল্প। লোকেরা সেগুলি দেখার জন্য বিরক্ত করলে প্রসারিত বৈশিষ্ট্যগুলি দুর্দান্ত। আপনি এইচডিএমএল ফর্ম্যাটে ডকুমেন্টেশন আউটপুট করতে রেড গেটের এসকিউএল ডকের মতো কিছু ব্যবহার করতে পারেন ।

আমি নামকরণের সম্মেলনগুলি খুঁজে পাই এবং সঠিকভাবে বিদেশী কীগুলি সেট আপ করার ফলে প্রায় স্ব-ডকুমেন্টিং ডেটাবেস বাড়ে। উদ্দেশ্যটির আরও ভাল বোঝার জন্য আপনার কাছে এখনও কিছু বাহ্যিক ডক্স থাকা উচিত।


একটি সাধারণ স্কিমা প্রায়শই কী অনুপস্থিত হয় (এমনকি একটি নামযুক্ত এবং বিদেশী কীড ডাটাবেসেও) ক্ষেত্রগুলির বিবরণ। কলামের নাম অনুসারে সমস্ত ক্ষেত্র যথেষ্ট সহজ হওয়া আমার অভিজ্ঞতায় অস্বাভাবিক।
স্টকবি


26

এসকিউএল সার্ভারের জন্য আমি বর্ধিত বৈশিষ্ট্যগুলি ব্যবহার করছি।

নিম্নলিখিত পাওয়ারশেল স্ক্রিপ্টের সাহায্যে আমি একক টেবিলের জন্য বা ডিবিও স্কিমাতে থাকা সমস্ত টেবিলের জন্য তৈরি টেবিল স্ক্রিপ্ট তৈরি করতে পারি।

স্ক্রিপ্টটিতে একটি Create tableকমান্ড, প্রাথমিক কী এবং সূচি রয়েছে। বিদেশী কী মন্তব্য হিসাবে যুক্ত করা হয়। সারণী এবং সারণী কলামগুলির বর্ধিত বৈশিষ্ট্যগুলি মন্তব্য হিসাবে যুক্ত করা হয়েছে। হ্যাঁ মাল্টি লাইনের বৈশিষ্ট্যগুলি সমর্থিত।

স্ক্রিপ্টটি আমার ব্যক্তিগত কোডিং শৈলীতে সুরযুক্ত।

  • একক কলামগুলির জন্য কোনও স্বতন্ত্র জোট নয়।

  • বর্তমানে এটির জন্য 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

মজার, আমি ভাবছিলাম যে অন্যান্য ব্যক্তিরাও কীভাবে এটি করছে ...

আমার প্রথম বড় ডাটাবেস প্রকল্পটি বিকাশ করার সময়, আমি দেখতে পেলাম যে মাইক্রোসফ্ট এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিও 10.0.1600.22 ডাটাবেস চিত্রগুলি সমর্থন করে যা আপনি কোনও শব্দ নথি বা অন্যান্য ডকুমেন্টেশন সফ্টওয়্যারে রফতানি করতে পারেন যেখানে আপনি যতটা ডকুমেন্টেশন বিশদ চান তার সাথে যুক্ত করতে পারেন। এসকিউএল ম্যানেজমেন্ট স্টুডিওতে আপনি যে ডাটাবেসটি সংযুক্ত করেছেন কেবল এটি প্রসারিত করুন এবং অবজেক্ট এক্সপ্লোরারটিতে "ডাটাবেস চিত্র" এ ডান ক্লিক করুন এবং একটি ইন্টারেক্টিভ ডায়াগ্রাম তৈরি করতে "নতুন ডাটাবেস ডায়াগ্রাম" নির্বাচন করুন যা বিভিন্ন টেবিলের মধ্যে সমস্ত সম্পর্ক দেখায়। আপনি ডায়াগ্রামগুলিতে কোন সারণীগুলি অন্তর্ভুক্ত করতে চান তাও নির্দিষ্ট করে দিতে পারেন, যাতে চিত্রটি টুকরো টুকরো করে কেবল এটি নথিভুক্ত করার চেষ্টা করা হয় তবে চিত্রটি অবিচ্ছিন্নভাবে না ঘটে। অন্য যে কোনও সম্পাদনা সফ্টওয়্যারটিতে চিত্রটি রফতানি করুন এবং আপনার পছন্দমতো কমেন্ট করুন।

আমি স্ক্রিপ্টে প্রচুর / মন্তব্য / প্রস্তাব করি যা আপনার ডাটাবেস তৈরি করে।

সাধারণত এটি যা যা হয় তা লিখে রাখাই অনেক বেশি কাজ, তবে দীর্ঘকালীন সময়ের জন্য একটি ভাল ধারণা যেমন আপনি বা অন্য কোনও দুর্বল আত্মা যখন কয়েক বছর পরে আপনার সৃষ্টি আপডেট করতে ফিরে আসে! :)


3
আমি এসকিউএল সার্ভার ডায়াগ্রামগুলি ব্যবহার করি না, কারণ বিদেশী কী সীমাবদ্ধতা কেবল টেবিলের সাথে কোথাও সংযুক্ত রয়েছে, যেমন এটি ইআর-চিত্রগুলিতে করা হয় । আমি সংযোগকারীগুলিকে প্রাথমিক এবং বিদেশী কী ক্ষেত্রগুলি সংযুক্ত করতে পছন্দ করি।
আর শেরুর্স

13

আমি সমস্ত অবজেক্টের জন্য এমএস_সেসক্রিপশন প্রসারিত সম্পত্তি সেট করেছিলাম এবং তারপরে এপেক্সএসকিউএল ডক ব্যবহার করে পুরো ডাটাবেসটি নথিভুক্ত করি । আমি আগে এইচটিএমএল নথি তৈরি করতাম, তবে ইদানীং আমি পিডিএফ পছন্দ করি


12

আমি ডেটা মডেলিংয়ের সরঞ্জামগুলি ব্যবহার করি কারণ তারা আমাকে একটি ডাটাবেসে "ফিট করে" এর বাইরে ডাটাবেস সম্পর্কে গুরুত্বপূর্ণ তথ্য নথিভুক্ত করতে দেয়। গোপনীয়তা / সুরক্ষা / সংবেদনশীলতা উদ্বেগ, স্টুয়ার্ডশিপ, পরিচালনা ইত্যাদি ইত্যাদির মতো মেটা ডেটা

এটি একটি ডেটাবেস ডকুমেন্টে কিছু প্রয়োজনের বাইরে যেতে পারে, কিন্তু এই জিনিসগুলি ব্যবসায়ের জন্য গুরুত্বপূর্ণ এবং তাদের ডেটা পরিচালনা করতে সহায়তা করে।

একাধিক ডাটাবেস / ইনস্ট্যান্স / সার্ভারে রক্ষিত ডেটা পরিচালনায় আনুষ্ঠানিক সরঞ্জামগুলিও আমাকে সহায়তা করে। এটি আমাদের প্যাকেজড অ্যাপ্লিকেশন জগতের চেয়ে বেশি সত্য কখনও হয়নি।


10

এসকিএল সার্ভারের ডকুমেন্টিংয়ের জন্য, আমি সবেমাত্র সম্প্রতি প্রকাশিত হওয়ার জন্য সুপারিশ করছি:

কেন্ডাল ভ্যান ডাইকের লেখা উইন্ডোজ পাওয়ারশেল ব্যবহার করে এসকিউএল সার্ভার এবং উইন্ডোজ ডকুমেন্টেশন

লিঙ্ক থেকে সংক্ষিপ্ত বিবরণ:

এসকিউএল পাওয়ার ডক হ'ল উইন্ডোজ পাওয়ারশেল স্ক্রিপ্ট এবং মডিউলগুলির সংকলন যা এসকিউএল সার্ভারের উদাহরণগুলি এবং তাদের অন্তর্নিহিত উইন্ডোজ ওএস এবং মেশিন কনফিগারেশনগুলি আবিষ্কার করে, ডকুমেন্ট করে এবং সনাক্ত করে। এসকিউএল পাওয়ার ডকটি এসকিউএল সার্ভার ২০০০ থেকে ২০১২ সাল পর্যন্ত এসকিউএল সার্ভারের সমস্ত সংস্করণ এবং উইন্ডোজ 2000 এবং উইন্ডোজ এক্সপি থেকে উইন্ডোজ এক্সপি এবং উইন্ডোজ এক্সপি এর সমস্ত সংস্করণ উইন্ডোজ সার্ভারের সমস্ত সংস্করণ এবং উইন্ডোজ ৮ এর সাথে কাজ করে। এসকিউএল পাওয়ার ডকও ডকুমেন্টিং করতে সক্ষম উইন্ডোজ অ্যাজুরি এসকিউএল ডেটাবেসস।


10

ডিবি অভিধান স্রষ্টা

শালীন জিইউআই এবং রফতানি / আমদানির বিকল্পগুলির সাথে একটি ওপেন সোর্স ডাটাবেস ডকুমেন্টেশন সরঞ্জাম। এটি ডকুমেন্টেশনগুলি সঞ্চয় করতে বর্ধিত বৈশিষ্ট্যগুলি ব্যবহার করে। এটি প্রাথমিক কী কলাম এবং বিদেশী কী কলামগুলির জন্য স্বয়ংক্রিয় বিবরণ উত্পন্ন করবে।


1
নেট ফ্রেমওয়ার্ক 4.0 প্রয়োজন এবং কেবল এসকিউএল সার্ভার এবং এসকিউএল এক্সপ্রেসের সাথে কাজ করে
কেভিনস্কি

8

প্রকৃতপক্ষে, বর্ধিত সম্পত্তি (এমএস_ডেস্ক্রিপশন) হ'ল উপায়। এই বিবরণগুলি মেটাডেটার অংশ হিসাবে সহজেই উপলব্ধ করা কেবল ডক্স জেনারেটর দ্বারা নয় (আশা করি একদিন) এমন সরঞ্জাম দ্বারাও ব্যবহার করা যেতে পারে যা "ইন্টেলিজেন্স" সরবরাহ করে উদাহরণস্বরূপ দুর্দান্ত সফ্টট্রির এসকিউএল সহকারী http://www.softtreetech.com/ isql.htm (সর্বশেষে আমি তাদের পরীক্ষা করেছিলাম না) বা এসকিউএল সেভার ম্যানেজমেন্ট স্টুডিওর ইনটেলিসেন্সে নির্মিত (এসকিউএল ২০০৮ থেকে)

আমি আরও বিশ্বাস করি যে ডিভস এবং ডিবিএর পক্ষে এই নোটগুলি যুক্ত করা সহজ হওয়া উচিত কারণ টাঙ্গুরেনা এবং নিক চামাস যেমন সঠিকভাবে উল্লেখ করেছেন - ডভস নথিগুলি আপডেট রাখতে এবং অনুলিপি কাজকে ঘৃণা করতে খুব অনিচ্ছুক - বিশেষত এমন একজন ব্যক্তির পক্ষে যা যথেষ্ট ন্যায্য তাদের পুরো পেশাদার জীবনের সময় জিনিস অনুকূলিতকরণ। সুতরাং যদি না উত্স কোডের খুব কাছে এক জায়গায় ডক্স আপডেট করা সত্যিই সহজ হয় - এটি কাজ করবে না। এক পর্যায়ে আমি ওয়েব অনুসন্ধান করেছিলাম এবং এর কোনও সমাধান খুঁজে পাইনি তাই এটি সহজ করার প্রয়াসে আমি লাইভডোকো (মুক্ত নয়, দুঃখিত) লিখেছি। আগ্রহী হলে এখানে আরও তথ্য: http://www.lidedoco.com/why-lidedoco


7

আপনি ডাব্লুএসএসএইচএলএসআরভিডোকও একবার দেখতে পারেন । এটি একটি দুর্দান্ত ছোট সরঞ্জাম যা এসকিউএল সার্ভারের প্রসারিত বৈশিষ্ট্যগুলির সাথে কাজ করে এবং একটি এমএস ওয়ার্ড ডকুমেন্ট তৈরি করে।

সমস্ত কলামের বৈশিষ্ট্যের মুদ্রণ আউট (বিদেশী কী সম্পর্কগুলির সাথে) বাক্সের বাইরে কাজ করে। প্রতিটি ক্ষেত্রে আরও বর্ণনার জন্য আপনাকে এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওতে col কলামগুলির বর্ধিত বৈশিষ্ট্যগুলি সেট আপ করতে হবে।

এটি নিখরচায় নয় তবে বেশ সাশ্রয়ী। আপনার যদি কেবল "প্রগতিতে কাজ না করা" ডিবি এর জন্য একটি ডকুমেন্টেশন তৈরি করতে হয় যা নিখরচায় ট্রায়ালটি ব্যবহারের জন্য যথেষ্ট হবে তার চেয়ে কম বা কম শেষ হয়েছে।

সরঞ্জাম ওয়েবসাইট


5

আমরা ডেটা ডিকোডোরি তৈরি করতে ডকুমেন্টো ব্যবহার করি , নথি সঞ্চিত পদ্ধতি এবং ফাংশনগুলি। আমরা ভিজিওতে তৈরি ইআরডি পেস্ট করি। সমস্ত ডকুমেন্টেশন ডেটাডো মেটাডেটা সংগ্রহস্থল (ফর্ম্যাট করা পাঠ্য) এ সংরক্ষণ করা হয় এবং আমরা এটি অভ্যন্তরীণ ব্যবহারের জন্য এইচটিএমএলে রফতানি করি বা প্রিন্টেড ডকুমেন্টের জন্য পিডিএফ রফতানি করি।

আমরা প্রতিটি বস্তুকে একটি মডিউলে বরাদ্দ করি এবং প্রতিটি মডিউল কোনও ব্যক্তিকে অর্পণ করি। ডেটায়েডো ডকুমেন্টেশন স্ট্যাটাস রিপোর্টিংয়ের সাথে আসে যাতে আমরা বলতে পারি যে কোনও নতুন কলাম বা টেবিল আছে যা ডকুমেন্ট করার দরকার আছে।


1

আপনি --ফাইলটিতে নিয়মিত- পূর্বনির্ধারিত মন্তব্য ব্যবহার করতে পারেন .sql

সুবিধাগুলির মধ্যে রয়েছে যে ডকুমেন্টেশনটি ডাটাবেস স্কিমার কোড সহ এবং আপনি এটি সহজেই গিটের মতো সংস্করণ নিয়ন্ত্রণ সিস্টেমে প্রতিশ্রুতিবদ্ধ করতে পারেন ।

উদাহরণ:

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

হতে পারে আপনি এক্সএমএলও ব্যবহার করতে পারেন।

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

ইআরডি ডায়াগ্রামগুলি (ডেটাবেস ডায়াগ্রামগুলি) সর্বদা আমার দলের পক্ষে সবচেয়ে দরকারী

তবে আমরা তৈরি প্রতিটি টেবিল এবং কলামের বৈশিষ্ট্যে " ডিক্রিপশন " লেখার নিয়ম রয়েছে ।

তারপরে আমরা একটি সফ্টওয়্যার নাম ব্যবহার করি সবার সাথে নথির জন্য এন্টারপ্রাইজ আর্কিটেক্ট , এবং সাথে এবং বিবরণTablesIndexesForeign KeysColumnsType

এখানে চিত্র বর্ণনা লিখুন


-1

বিশেষত মাইএসকিউএলের জন্য, আমরা সর্বদা মাইএসকিউএল ওয়ার্কবেঞ্চ ব্যবহার করি । আমরা ডিজাইনারে আমাদের ডাটাবেস ডিজাইনগুলি তৈরি করি, তারপরে এটি চালনযোগ্য এসকিউএল স্ক্রিপ্ট হিসাবে রফতানি করি। নকশায় সমস্ত পরিবর্তন প্রয়োগ করে এবং তারপরে উত্পন্ন স্ক্রিপ্টটি চালানো নিশ্চিত করে যে নকশা এবং প্রকৃত ডাটাবেস একে অপরের সাথে পুরোপুরি সমন্বয় করে এবং ডকুমেন্টেশনটি সহজেই পুরানো হয়ে উঠবে না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.