私は最初の mysql INSERTテストを経験しており、これらのテーブルを使用しています:
table employees
-> employee_id
-> employee_name
-> employee_surname
-> employee_url
table areas
-> area_id
-> area_city
-> area_address
-> area_country
table agencies
-> agency_id
-> agency_name
-> agency_url
table node_employees
-> node_id
-> employee_id
-> area_id
-> agency_id
table_employee、table_areas、およびtable_agencyにデータを保存しますが、すべてのデータを同時に保存する必要はないので、従業員を作成し、続いて代理店または住所を作成できます。
特異なデータ挿入の場合、このようなものを使用する必要がありますか、それともテーブルnode_employeesを直接使用する必要がありますか? はいの場合、どうすればよいですか?
INSERT INTO employees (employee_name, employee_surname, employee_url)
VALUES ('Roger', 'Waters', 'http://pinkfloyd.com')
INSERT INTO agencies (agency_name, agency_url)
VALUES ('Google', 'http://google.com')
INSERT INTO areas (area_city, area_address, area_country)
VALUES ('Rome', 'Via Roma, 123', 'Italy')
行を相互にリンクするために、リレーショナル テーブルnode_employeesを作成しました。従業員を地域や代理店に関連付けるために使用していますが、このリレーショナル テーブルにデータを関連付けるにはどうすればよいでしょうか。
SELECT employee_id FROM employees WHERE employee_name = 'Roger'
SELECT agency_id FROM agencies WHERE agency_name = 'Google'
// I'll get their ids in php
$php_employee_id
$php_agency_id
// and then
INSERT INTO node_employees (employee_id, agency_id)
VALUES ('$php_employee_id', '$php_agency_id')
また、別の疑問があります。従業員をエリアに関連付ける必要がある場合はどうすればよいですか? 別のクエリを使用する必要があるため、あらゆる可能性に対するクエリを使用する必要がありますか?
// so, not this
$php_employee_id = 12;
$php_agency_id = 7;
$php_area_id = null;
INSERT INTO node_employees (employee_id, agency_id, area_id)
VALUES ('$php_employee_id', '$php_agency_id', '$php_area_id') // will this remove the previous data with null in area_id?