2012-03-09 10 views
11

Niektórzy ludzie lubią opisywać swoją strukturę bazy danych w prosty tekstowy sposób zamiast używać instrukcji CREATE TABLE. Kilka przykładów:Uproszczone/skrótowe języki definicji danych SQL?

Wiesz o jakiegokolwiek oprogramowania, które przekształca ten rodzaj notacji skróconej do rzeczywistych SQL ?

+0

Istnieje kilka narzędzi, które mogą zrobić coś odwrotnego (jak obraz, nie wiem na skrót). Utwórz bazę danych (z instrukcjami SQL lub GUI), a narzędzie wykona rysunek tabel. Zobacz [to pytanie] (http://stackoverflow.com/questions/8895806/how-to-implement-polymorfical-associations-in-an-existing-database/9449031#9449031). Uważam, że OP wykorzystał Visio. Obraz w mojej odpowiedzi został zrobiony moim MySQL Workbench. –

+0

Tak, istnieje wiele rozwiązań click'n'draw-your-database, ale tak mało (jeśli w ogóle?), Które działają bez użycia myszy. – biziclop

+0

Większość używanych przeze mnie narzędzi potrafi odczytywać dobry stary zwykły SQL. Wiele narzędzi ma inżynierię odwrotną, która pobiera tablice tworzenia SQL z istniejących baz danych. I może narysować ładne diagramy. –

Odpowiedz

7

Faktycznie, właśnie skończyłem tworzenia skryptu PHP, który robi dokładnie to, ale mam nadzieję, że jest coś bardziej profesjonalnego tam ...

Demo mojego konwertera:

http://simpleddl.orgfree.com

Przykład wkład:

= 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 

wyjściowa:

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

To całkiem fajne. Czy obsługuje również inne systemy DBMS (na przykład PostgreSQL)? –

+0

Powyższy link wygasł w międzyczasie. Jeśli jesteś zainteresowany, zostaw komentarz tutaj :) – biziclop

+0

biziclop Chciałbym zobaczyć twój kod i pomysły na notacje (jestem aktualnie zainteresowany ddl dla oracle w tej chwili), masz to w publicznym repozytorium w dowolnym miejscu? – plockc

2

Widzę, że wspomniałeś narzędzie do przekształcania tekstu na ddl, które jest dostępne pod adresem http://sqlfiddle.com. Jest to właściwie narzędzie, które zbudowałem (sqlfiddle.com jest moją witryną) w języku JavaScript, aby ułatwić użytkownikom tabele tekstowe w ich pytaniach StackOverflow i szybciej przetłumaczyć je na prawdziwy DDL. Wydaje mi się, że działa całkiem dobrze w przypadku dość powszechnej odmiany formatów tabel tekstowych, ale jestem pewien, że przydałoby się trochę pracy, aby obsłużyć większą różnorodność. Obsługuję różne typy DDL za pomocą oddzielnych szablonów handlebars.js dla każdego z nich (MS SQL, Oracle, PostgreSQL, MySQL i SQLite).

Cała biblioteka jest napisana jako JavaScript, więc jeśli ktokolwiek chciałby mi pomóc ją ulepszyć, bardzo chciałbym, abyś ją napisał. Fork me on github i poszukaj pliku javascripts/ddl_builder.js. Chciałbym mieć pewne prośby o ściągnięcie!

+0

Cześć, dziękuję za odpowiedź i sqlfiddle! :) – biziclop