2012-03-09 11 views
11

कुछ लोग CREATE TABLE कथनों का उपयोग करने के बजाए एक साधारण पाठ तरीके से अपनी डेटाबेस संरचना का वर्णन करना पसंद करते हैं। कुछ उदाहरण:सरलीकृत/शॉर्टेंड एसक्यूएल डेटा परिभाषा भाषाएं?

आप किसी भी सॉफ्टवेयर है जो वास्तविक SQL कथन को आशुलिपि संकेतन इस तरह धर्मान्तरित के बारे में जानते हैं ?

+0

कुछ ऐसे उपकरण हैं जो विपरीत कर सकते हैं (एक छवि के रूप में, मुझे शॉर्टंड नोटेशन के लिए पता नहीं है)। डेटाबेस बनाएं (एसक्यूएल कथन के साथ या जीयूआई के साथ) और टूल टेबल का चित्रण करता है। [यह प्रश्न] देखें (http://stackoverflow.com/questions/8895806/how-to-implement-polymorphic-associations-in-an-existing-database/9449031#9449031)। मुझे लगता है कि ओपी ने Visio का उपयोग किया है। मेरे जवाब में छवि को मेरा MySQL वर्कबेंच बनाया गया था। –

+0

हां, इतने सारे क्लिक'एड्रा-अप-डेटाबेस समाधान हैं, लेकिन बहुत कम (यदि कोई है?) जो आपके माउस का उपयोग किये बिना काम करता है। – biziclop

+0

मेरे द्वारा उपयोग किए जाने वाले अधिकांश टूल अच्छे पुराने सादे एसक्यूएल को पढ़ सकते हैं। और कई टूल में रिवर्स-इंजीनियरिंग है जो मौजूदा डेटाबेस से SQL तालिका बनाने के लिए पुनर्प्राप्त करता है। और अच्छे आरेख खींच सकते हैं। –

उत्तर

7

वास्तव में, मैं सिर्फ एक PHP स्क्रिप्ट है, जो वास्तव में यह करता बनाने का काम समाप्त, लेकिन मुझे आशा है कि वहाँ और अधिक पेशेवर कुछ है ...

मेरी कनवर्टर का डेमो:

http://simpleddl.orgfree.com

उदाहरण इनपुट:

= ID id P AI 

person 
    ID 
    mother_id -> person 
    father_id -> person 
    !FK mother_id, father_id -> family U:C, D:C 

family 
    P female_id -> person 
    P male_id -> person 

आउटपुट:

CREATE TABLE IF NOT EXISTS person (
    id   INT NOT NULL AUTO_INCREMENT, 
    mother_id INT NOT NULL, 
    father_id INT NOT NULL, 
    PRIMARY KEY (id) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; 

CREATE TABLE IF NOT EXISTS family (
    female_id INT NOT NULL, 
    male_id INT NOT NULL, 
    PRIMARY KEY (female_id, male_id) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

ALTER TABLE person ADD FOREIGN KEY (mother_id) REFERENCES person(id); 
ALTER TABLE person ADD FOREIGN KEY (father_id) REFERENCES person(id); 
ALTER TABLE person ADD FOREIGN KEY (mother_id, father_id) REFERENCES family(female_id, male_id) ON DELETE CASCADE ON UPDATE CASCADE; 

ALTER TABLE family ADD FOREIGN KEY (female_id) REFERENCES person(id); 
ALTER TABLE family ADD FOREIGN KEY (male_id) REFERENCES person(id); 
+1

यह बहुत अच्छा है। क्या यह अन्य डीबीएमएस (जैसे PostgreSQL) का भी समर्थन करता है? –

+0

उपर्युक्त लिंक इस समय समाप्त हो गया है। यदि आप रुचि रखते हैं, तो यहां एक टिप्पणी छोड़ें :) – biziclop

+0

biziclop मैं आपका कोड और नोटेशन विचार देखना चाहता हूं (मुझे वास्तव में इस समय ओरेकल के लिए डीडीएल में दिलचस्पी है), आपके पास यह कहीं भी सार्वजनिक भंडार में है? – plockc

2

मुझे लगता है कि आपने टेक्स्ट-टू-डीडीएल उपकरण का उल्लेख किया है जो http://sqlfiddle.com पर उपलब्ध है। यह वास्तव में एक टूल है जिसे मैंने बनाया है (sqlfiddle.com मेरी साइट है) जावास्क्रिप्ट में विशेष रूप से टेक्स्ट टेबल को लोगों को अपने स्टैक ओवरफ्लो प्रश्नों में पोस्ट करना आसान बनाने की कोशिश करने के लिए और अधिक तेज़ी से उन्हें वास्तविक डीडीएल में अनुवादित करने का प्रयास करें। मुझे लगता है कि यह टेक्स्ट टेबल स्वरूपों की सामान्य भिन्नता के उचित मात्रा के लिए काफी अच्छी तरह से काम करता है, लेकिन मुझे यकीन है कि यह अधिक विविधता को संभालने के लिए कुछ काम का उपयोग कर सकता है। मैं अलग-अलग डीडीएल प्रकारों को प्रत्येक के लिए अलग हैंडलबर्स.जेएस टेम्पलेट्स के माध्यम से समर्थन करता हूं (एमएस एसक्यूएल, ओरेकल, पोस्टग्रेएसक्यूएल, माईएसQL और एसक्यूएलसाइट)।

पूरी लाइब्रेरी जावास्क्रिप्ट के रूप में लिखी गई है, इसलिए यदि कोई मेरी मदद करने में मेरी मदद करना चाहेगा, तो मुझे आपके योगदान पसंद आएंगे। Fork me on github और फ़ाइल जावास्क्रिप्ट/ddl_builder.js के लिए देखो। मुझे कुछ पुल अनुरोध करना अच्छा लगेगा!

+0

हाय, आपके उत्तर और एसक्यूफिल के लिए धन्यवाद! :) – biziclop

संबंधित मुद्दे