Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Potrzebujesz porady na temat prostego projektu bazy danych MySQL

Dlaczego masz attribute stół ?

Atrybuty to kolumny, a nie tabele.

Link do witryny nic nam nie mówi.

Cała idea bazy danych polega na tym, że łączysz wiele małych tabel, zgodnie z wymaganiami, dla każdego zapytania, więc musisz się do tego przyzwyczaić. Jasne, daje ci siatkę, ale krótką i słodką, bez Nulls. To, co próbujesz zrobić, to unikać stołów; idź z tylko jedną ogromną siatką, która jest pełna zer.

(snip)

Nie należy poprzedzać nazw atrybutów (nazw kolumn) nazwą tabeli, to jest zbędne. Stanie się to jasne, gdy zaczniesz pisać SQL, który używa więcej niż jednej tabeli:wtedy możesz użyć nazwy tabeli lub aliasu, aby poprzedzić wszystkie niejednoznaczne nazwy kolumn.

Wyjątkiem jest PK, który jest w pełni renderowany i używany w tej formie wszędzie tam, gdzie jest FK.

Przejrzyj witrynę i przeczytaj kilka pytań dotyczących SQL.

Po wykonaniu tej czynności możesz później pomyśleć, czy chceszstrength i defense być atrybutami (kolumnami) type; albo nie. I tak dalej.

Odpowiedzi na komentarze 30.11.10

.
Wspaniale, rozumiesz swoje dane. Dobrze. Teraz rozumiem, dlaczego miałeś tabelę atrybutów.

  1. Upewnij się, że te 10 przykładów jest reprezentatywnych, przyglądam się im uważnie.

    • Typ:Gem Nazwa:Emberspark Pendant... A może szyjaRóżne to typ?
    • Czy Unique to prawdziwy ItemType? Myślę, że nie
    • Akcja.Wyświetl „Proszę wrócić do organizatora sezonu”
    • Gdzie są atrybuty AttackPower i HitRating ?
      .
  2. Ile jest różnych rodzajów przedmiotów (z 35 000), na przykład w moim klastrze produktów. Innym sposobem postawienia tego pytania jest to, ile jest wariacji. Znaczy nie 3500 Items ÷ 8 Attributes ?

  3. Czy atrybuty item_attributes zmienią się bez? wydanie s/w (np. nowy Inner Strength atrybut) ?

  4. Na element, jakie atrybuty się powtarzają (więcej niż jeden); do tej pory widzę tylko działanie?

  5. To jest gra, więc potrzebujesz bazy danych, która jest ciasna i bardzo szybka, może w pełni rezydująca w pamięci, prawda. Brak wartości null. Brak niczego VAR. Najkrótsze typy danych. Nigdy nie powielaj niczego (nie powtarzaj się). Czy jesteś zadowolony z bitów (wartość logiczna) i wektorów?

  6. Czy musisz łatwo przetłumaczyć te regexes na SQL, czy jesteś zadowolony z poważnego hasła dla każdego z nich (tj. Kiedy już je uruchomisz w SQL, są całkiem stabilne i wtedy nie będziesz się z tym bawić, chyba że znajdziesz błąd ) (bez sarkazmu, poważne pytanie) ?

    6.1 A może jest odwrotnie:baza danych rezyduje na dysku; ładujesz go do pamięci raz; uruchamiasz na tym wyrażenia regularne podczas rozgrywki; od czasu do czasu zapisywanie na dysku. Dlatego nie ma potrzeby tłumaczenia wyrażeń regularnych na SQL ?

Oto model danych, do którego zmierzam, to wcale nie jest pewne; będzie to modulowane przez twoje odpowiedzi. Aby było jasne:

  • Szósta forma normalna to Rząd składa się z klucza podstawowego i co najwyżej jednego atrybutu.

  • Narysowałem (6.1) nie (6), ponieważ Twoje dane utwierdzają mnie w przekonaniu, że potrzebujesz czystej relacyjnej bazy danych 6NF

  • Mój Model danych klastra produktów , przykład lepszy niż EAV, to 6NF, a następnie ponownie znormalizowany (nie w sensie normalnym) według typu DataType, aby zmniejszyć liczbę tabel, które już widziałeś. (Ludzie z EAV zwykle wybierają jeden lub kilka gigantycznych stołów.)

  • To jest proste 5NF, a tylko 2 stoły po prawej w 6NF.

Link do modelu danych gry

Link do notacji IDEF1X dla tych, którzy nie są zaznajomieni ze standardem modelowania relacyjnego.

Odpowiedź na edycję nr 2 05 grudnia 10

1.1. OK, poprawione.

1.2. Następnie IsUnique jest wskaźnikiem (wartość logiczna) dla elementu.

1.3. Akcja. Rozumiem. Więc gdzie zamierzasz to przechowywać?

1.4. SzyjaMiscellaneous oznacza, że ​​przedmiot należy do obu kategorii Neck i Misc . Oznacza to dwa oddzielne Item.Name=Emberspark Pendant , każdy z inną kategorią.

.
2. i 5. Potrzebujesz więc szybkiej i szybkiej bazy danych rezydującej w pamięci. Dlatego próbuję przenieść Cię przez linię, z dala od GridLandu, do RelationalLand.
.
3. Ok, pozostajemy przy Piątej Formie Normalnej, nie ma potrzeby stosowania 6NF ani klastra produktów (tabele według typu danych). Pozbądź się Values są liczbami całkowitymi.
.
4. Widzę dodatkowo:Level , RequiredLevel , IsUnique , BindsPickedUp , BindsEquipped .
.
5. Bity to wartości logiczne { 0 | 1}. Wektory są wymagane do projekcji (relacyjnych). Dojdziemy do nich później.
.
6. Ok, wyjaśniłeś, nie tłumaczysz wyrażeń regularnych na SQL. (Slog oznacza ciężką pracę)..
7. Co to jest Category.ParentId ? Kategoria nadrzędna ? To nie pojawiło się wcześniej.
.
8. Attribute.GeneratedId ?

Oceń model danych (zaktualizowany). Mam jeszcze kilka kolumn, oprócz tego, co masz w swojej. Jeśli jest coś, czego nie rozumiesz w modelu danych, zadaj konkretne pytanie. Przeczytałeś dokument Notation, prawda?

Mam Action jako tabela, z ItemAction trzymając Value :
Equip: increase attack power by 28 to Action.Name =Increase attack power by i ItemAction.Value =28.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można wykonać procedury składowanej MySQL z Javy

  2. Jak używać REGEXP z sekwencjami specjalnymi, takimi jak granica słowa?

  3. Jak tworzyć zapytania sprzężenia za pomocą Sequelize na Node.js

  4. Zapytania MySQL IN są strasznie wolne z podzapytaniem, ale szybkie z określonymi wartościami

  5. Samouczek MySQL — konfiguracja i zarządzanie SSL na serwerze MySQL