Domena inaczej

https://xpil.eu/KQDJX

Jako intensywny i wieloletni Bazyl (takim mianem określam ludzi pracujących z bazami danych) mam siłą rzeczy do czynienia nie tylko z tabelami, rekordami i zapytaniami SQL ale również - zwłaszcza przez ostatnie 2-3 lata - z narzędziami do modelowania danych.

Nie mam za sobą żadnego teoretycznego, formalnego przygotowania do modelowania danych. Obca jest mi szczegółowa znajomość diagramów UML. Modeluję dane ad-hoc i od niedawna. Ale modeluję. A co.

Główne narzędzia, jakich do tej pory używałem w tym niecnym celu, to Framework Manager (firmy Cognos), Enterprise Architect (firmy Sparx Systems) oraz Embarcadero Data Architect i Embarcadero Business Architect (firmy Embarcadero Technologies). Oprócz tego zdarza mi się też modelować jakieś prostsze rzeczy w Excelu, Accessie a także na starej, dobrej tablicy, przy użyciu starych, dobrych mazaków 😉

Ale do rzeczy, mociumpanie. Otóż całkiem niedawno odkryłem w Embarcadero maleńką, ale jakże przydatną opcję domenowania kolumn. Nie wiem, czy określenie "domenowanie kolumn" ma jakikolwiek sens, ale ponieważ termin ten całkiem mi tu pasuje, będę go używał. W końcu mój blog jest najmojszy i mogę sobie nazwać kurę kaczką i gówno mi kto zrobi 😉

W telegraficznym skrócie, idea zasadza się na tym, że - dodając nową kolumnę - wybieramy sobie z uprzednio zdefiniowanej listy domenę, do której kolumna ta należy. Efekt jest taki, że wszystkie atrybuty kolumny zostają natychmiast wypełnione poprawnymi wartościami, ponadto niektóre z nich zostają zablokowane.

Brzmi nudno? No bo to jest nudne 😉 Inaczej nie byłoby tego na tym blogu.

Spróbujmy pokazać to na przykładzie. Załóżmy, że modelujemy system katalogowania książek. I w tym systemie mamy już utworzoną tabelę autorów, a w niej kolumnę [autor_id] typu numerycznego, 32-bitową, NOT NULL.

Tworzymy sobie teraz domenę nazwaną "ID Autora". Wszystkie atrybuty pobieramy z ww. kolumny [autor_id].

Od tej pory, gdziekolwiek potrzebujemy stworzyć nową kolumnę - referencję do tabeli autorów, wybieramy tylko domenę "ID Autora" i wszystkie parametry tej kolumny wypełnią się automatycznie. Czyli: nazwa, typ danych INT(32) oraz NOT NULL. A także, jeżeli zdefiniowaliśmy jakiekolwiek inne atrybuty, różne inne atrybuty 😉

Brzmi banalnie?

Może i tak. Ale teraz wyobraźmy sobie system oparty na kilkunastu różnych serwerach baz danych, z kilkudziesięcioma bazami na każdym serwerze, ponad setką tabel w każdej bazie oraz mnóstwem kolumn w każdej tabeli. I załóżmy, że musimy dodać do jakiejś od lat nie ruszanej tabeli kolumnę "kolor stolca" albo "model muszli" i nie pamiętamy, czy kolory były zapisane za pomocą UTF czy ISO, czy maksymalna długość nazwy koloru to było 20 czy 45 znaków, czy dopuszczamy wartości NULL czy nie. I tak dalej. Tymczasem możemy po prostu wybrać domenę "Kolor Stolca" i wszystko się samo, samiutko wypełni. Genialna sprawa.

Przypuszczam, że Czytelnik odpadł już ze dwa akapity temu i teraz tylko lekko pochrapuje. Jeżeli jednak udało Ci się doczołgać aż tutaj, naści sucharka:

W zoologicznym pięcioletnia dziewczynka do sprzedawcy:
- Poplosę klólicka
- OK, chodź dziecko ze mną, o tutaj mamy króliczki. Jakiego chcesz? Może biały? Może czarny? A może łaciaty?
- Mojego pytona pieldoli jaki on ma kolol.

https://xpil.eu/KQDJX

6 komentarzy

  1. do zabaw z modelowaniem polecam Power Designer'a [modele logiczne i fizyczne], reverse engeenering itp.

  2. W '92 bawiłem się czymś o nazwie Common Data Dictionary/Repository (producent DEC). W b.d. tworzyło się definicje domen, a potem można było 'domenować' nie tylko w DDL-u ale też w kodach źródłowych aplikacji (C,Pascal,(chyba nawet) Assembler).

    'Wymądrzam' się żeby dać znać, że jeszcze żyję 😉
    Pozdrawiam, Skiba

Leave a Comment

Komentarze mile widziane.

Jeżeli chcesz do komentarza wstawić kod, użyj składni:
[code]
tutaj wstaw swój kod
[/code]

Jeżeli zrobisz literówkę lub zmienisz zdanie, możesz edytować komentarz po jego zatwierdzeniu.