Doktrin PHP Soru

2 Cevap php

Eğer tablo tanımları ve veri demirbaşlar CLI kullanarak yüklü sırayı belirtebilirsiniz merak ediyordum. Benim sorunum iki tablo, diğer işaret eden bir yabancı anahtar kısıtlaması olan her var, bu yüzden bir rekor eklendikten sonra sınırlamalardan birini eklenmesi gerekir olmasıdır. Ya da belki bu yapmanın daha iyi bir yolu var ... Ben hiç db uzman değilim ve benim kafam bugün bulanık.

Şema:

CREATE TABLE clients (
  id INT AUTO_INCREMENT,
  name VARCHAR(255), address VARCHAR(255), 
  primary_contact_user_id INT  # References a user record in the users table
  ...
);

CREATE TABLE users (
  id INT AUTO_INCREMENT,
  username VARCHAR(255),
  client_id INT  # References a client record in the clients table
  ...
);

ALTER TABLE clients 
  ADD CONSTRAINT clients_primary_contact_user_id_users_id 
    FOREIGN KEY (primary_contact_user_id) REFERENCES users(id);

ALTER TABLE users 
  ADD CONSTRAINT users_client_id_clients_id 
    FOREIGN KEY (client_id) REFERENCES clients(id);

2 Cevap

Ben de bir DB uzmanı değilim, ama onlarla çalışmak çok zaman harcamak yok. Ben dairesel referans aslında yanlış olduğuna inanıyorum.

Bir başka tabloya katılmak olsa gereksiz bir dairesel referans yüzden ne olursa olsun DB kuramı yaptırım o ya da değil, sen bir alan alabilir. Ben birini ortadan kaldırmak ve bu değişikliği yansıtmak için herhangi bir sorgu değiştirmek öneririm.

Bir tahmin dayanarak, ben neredeyse tek bir öğe "birincil" olarak seçildi olası bir çok-çok ilişkisi gibi sesler gibi, primary_contact_user_id ortadan kaldırmak öneririm ...

Eğer bu tasarım gerekli olduğunu düşünüyorsanız, neden açıklayabilir misiniz?

CREATE TABLE ve ALTER TABLE deyimleri arasındaki INSERT deyimleri koydu.