Wpis z mikrobloga

Pytanie w temacie baz danych. Załóżmy że mam w bazie MySQL tabele „pojazdy” przechowującą informacje techniczne takie jak id pojazdu, id właściciela itp, załóżmy że taka tabela techniczna jest niezbędna. Mamy tez tabele takie jak „samochody”, „motocykle”, „ciężarówki” itp, czyli tabele przechowujące dane charakterystyczne dla danego typu pojazdu, te tabele są połączone FK do tabeli pojazdy po id pojazdu. Oczywiście każdej pozycji w tabeli pojazdy może odpowiadać łącznie jeden rekord we wszystkich tabelach „podrzędnych”(nie może być samochodu i motocykla o tym samym id pojazdu). Czy w relacyjnych bazach danych istnieje jakiś mechanizm który pilnowałby tego? To nie jest konkretny przykład, chodzi mi tylko o zaprezentowanie pewnej idei, jak podejść do takiego problemu? #bazydanych #sql #mysql #it #programowanie #pytanie #problem
  • 12
@modzelem: To są szczegóły merytoryczne, mi zależy aby skupić się na idei jednej tabeli „nadrzędnej” która reprezentuje jakąś abstrakcje i kilku tabelach „podrzędnych” które rozwijają ją w konkretny sposób ale wzajemnie się wykluczają
@atm-Pa: Możesz sobie zrobić dodatkowa tabele gdzie wrzucisz znacznik tego ze już masz rekord dla specyficznego typu i do tego trigger na eventy before i after który to sprawdzi i nie pozwoli wykonać operacji albo posprząta
@atm-Pa: Niekoniecznie.
Dodajesz motor, dostaje numer 1. Do tabeli dane wstawiasz (idpojazdu, rodzaj, wartosc ) values ( 1, "pojemnosc", "200cc" ), (1, "szybkosc", "200km/h" )
Dodajesz ciężarówkę, numer 2. (id
pojazdu, rodzaj, wartosc ) values ( 2, "wysokosc", "2.5m"), ( 2, "szerokosc", "1.5m" )

Przy wyświetlaniu i edycji tylko musisz uwzględnić to, że będą różne pola.
@januzi: +1 po prostu tabela bedzie miala mnostwo kolumn ale nie wszystkie beda dotyczyly danego typu wiec beda puste potrzebny tylko widok wtedy jest na selekcie korespondujacy dla danego typu. na dodatek jak kiedys zmienisz zdanie to mozesz uzyc kolumny ktora juz istnieje i np. dla motocykla tez ustawic wymiary itp. nie wiem jak w mysql ale w postgresie mozna tworzyc tabele ktore sa tylko widokami dla innych tabel i dla