[SQL] Jak znormalizować taką bazę danych?

Witam! Mam bazę danych przedmiotów w muzeum. Baza wyglada tak:

Zrzut_ekranu_Deepin20160221124331.thumb.

I  są tam obiektu które mają mmm_id które mówi że jeden obiekt składa się z kilku elementów które maja różne wymiary. 

Np mmm_id: 343.2005.1-3 mówi że rok zakupu to 2005 i składa się z 3 elementów które mogą mieć różne wymiary.

Lecz tak jak widać na screenie niektóre elementy mają np. id 3123.2003.1-17 i mają 17 różnych wymiarów, ale są elementy które mają jeden wymiar dla każdej rzeczy.

Są też elementy które mają mmm_id 4234.2001.1-13 a w wymiarach mają wpisane: “page  (35 x 42.9 cm),  Prints: various dimensions.”

I wtedy nie wiem jak to podzielic na więcej wierszy :confused: Czy takie wiersze dzieli się na mniejsze żeby każdy rekord zawierał tylko jedną informację? Czy da się to zrobić jakoś w SQLu?

 

3 tabele:

  • ta którą masz, bez mmm_id i wymiarów (ew czegoś innego co tam chcesz rozdzielić)
  • w drugiej trzymasz to co chcesz dla elementu np jego nazwę i id_tabeli wyżej 
  • w trzeciej masz wymiar - nazwa wymiaru czy co tam trzymasz i id_elementu dla danego wymiaru

 By oszczędzić miejsce w bazie mógłbyś zrobić jakiś enum o ile nazwy wymiarów się powtarzają.

Niezbyt rozumiem. 

W ten sposób? :

  • Title, author, year, date acquired, object_id
  • MMM_id, object_id
  • MMM_id, dimensions

Wtedy bym miał

  • “Soft hardware ,  Masayuki , 1975 ,  1979.05.30 , 3130”
  • “264.1979.1, 3130” ,

Nie bardzo wiem o co chodzi z tym rekordem, rozmiar dowolny czy jak ? Jeśli nie ma rekordów bez rozmiarów to w ogóle bym go olał i dodał ifnull różne rozmiary do join

No są rekordy które zamiast kilkunastu wymiarów zawierają jeden np “kazdy po 10cm” Ale wnioskujac po mmm_nr wiadomo że tych elementów jest kilkanaście w jednym obiekcie. 

Opisz językiem naturalnym jak najdokładniej o co chodzi w tej relacji (tabeli) oraz opisz relacje poszczególnych atrybutów - jeśli występują. Co od czego jest zależne.

Baza przedmiotów w muzeum. Od object id z sa zależne tytuł, rok, autor. Muzeum może mieć jeden obiekt skladające się z róznych elementów z różnymi wymiarami. Muzealne id - mmm_nr nadaje się poszczególnym elementom które mogą mieć różne wymiary. Np mmmnr 1.1994.1 to może być jeden eksponat(obiekt) o id 3 o wymiarze 30cm i jest to np jakas waza. Mmmnr 1.1994.2 to.jest ten sam eksponat, również waza tego artysty tylko może mieć 20cm. I wszystkie rekordy 1.1994.X dalyby nam ten sam obiekt/eksponat. I np w tym przypadku kilka przedmiotów(roznianych poprzez mmm_nr) tworzy jeden eksponat(object_id). Tylko że są rekordy takie gdzie jest 17 elementów w jednym i mają 17 różnych wymiarow A są takie ktorych jest parenascie Ale są tego samego rozmiaru.

Nic nadal z tego nie zrozumiałem.

Już w drugim zdaniu coś mi się nie zgadza w Twoim opisie:

Skoro są one rożnych wymiarów to nie są takie same.

Tzn to jest jeden obiekt, ten sam tytuł, artysta i rok ale skladac sie z kilku elementów ktore mają różne mogą mieć wymiary.

Poprawiłem poprzedmi wpis

  1. Co to jest mmm_nr

  2. Możesz napisać w sposób naturalny przykładową listę takich eksponatów (około 5) z danymi jakie posiadają, ale staraj się unikać jakiś id które są tylko dla bazy danych.

Dopytuję się tak o wszystko ponieważ mam wrażenie jakby cała tabela była źle zaprojektowana. A żeby to stwierdzić muszę wiedzieć o co chodzi po ludzku, a nie programistycznie.

Masz jakieś coś, to coś składa się z jakiś podcosiów które mają wymiary (przynajmniej ja to tak rozumiem).

Np: