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

Przechowywanie nadmiarowych kluczy obcych w celu uniknięcia złączeń

Połączenia to sposób działania relacyjnych DBMS. Dowiedz się więcej o normalizacji i korzystaj z niej.

Jeśli tak jest w przypadku każdej usługi, Twoja baza danych podlega ograniczeniu. Chodzi o to, że (select service from Service_has_transaction join Transaction_has_wallet) jest podzbiorem (select service from Service_has_transaction join Transaction_has_wallet join Wallet_has_bonus) .

Większość DBMS SQL nie pozwala na deklaratywne wyrażenie tego ograniczenia i nie wie, jak zoptymalizować jego egzekwowanie. Istnieje jednak idiom SQL, którego możemy użyć do wyrażenia i wymuszenia go deklaratywnie. (Zgadywanie definicji tabeli:) Najpierw dodaj bonus kolumna do Transaction_has_wallet i klucz obcy z Transaction_has_wallet (wallet, bonus) do Wallet_has_bonus . Następnie dodaj kolumny portfela i bonusów do Service_has_transaction oraz klucz obcy z Service_has_transaction (transaction, wallet, bonus) do Transaction . Powoduje to dodanie nadmiarowych kolumn, ale mimo to ogranicza bazę danych do prawidłowych stanów, ponieważ ograniczenia klucza obcego zapobiegają błędnym wartościom nadmiarowym. (Mam nadzieję, że jest to motywujący przykład do nauki wyrażania arbitralnych ograniczeń za pomocą wyzwalaczy).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL obcina tekst za pomocą wielokropka

  2. mysql count total z pola z wartościami oddzielonymi przecinkami

  3. Inżynier postępu nie robi nic w środowisku MySQL Workbench

  4. Nie można załadować wtyczki uwierzytelniania „caching_sha2_password”

  5. Geolokalizacja dużej liczby postów na podstawie adresów IP. (880 000 wierszy)