2

私は以前、システムが以前に設計されていたので、通常はDMLだけではあるが、かなりのビット(MySQL、Oracle)で作業しました。関係に依存する外部キー

私は唯一の開発者としてプロジェクトに取り組んでおり、アプリケーション開発とDBAを担当しています。後者はもちろん問題が多いことを証明している。

いずれにしても、私は外部キーの制約とモデル内での論理配置について更新する必要があります。次を考える:

dbc_user 
    .user_id INT, Primary Key, Auto Increment 
    // arbitrary columns 

dbc_user_profile 
    .user_id INT, Primary Key 
    // arbitrary columns 

これらのテーブルには、1対1の関係です。私はその関係を考えれば、その列を単一の表にまとめることができると理解していますが、それらを分けておきましょう。その外来キーは、dbc_user_profileテーブルに属していますか?

多対多

dbc_user 
    .user_id INT, Primary Key, Auto Increment 

dbc_city 
    .city_id INT, Primary Key, Auto Increment 

dbc_user_city 
    .city_id INT, Primary Key 
    .user_id INT, Primary Key 

どのテーブルが参照/参照テーブルですか?

私は何らかの理由で、これに関する素早く汚いチュートリアルを見つけられないようですが、その関係について説明しています。

  • 外国人のキーに関してDDLの詳細を掘り下げる半精通のためのチュートリアルをお勧めしますか?または;
  • 誰かが1対11対メートル、およびメートルツーメートル関係とFKの参照に簡単に説明を与えることができますか?

答えて

4

外部キーは、子テーブルで宣言され、親テーブルを参照します。

1対1の関係では、DBC_USERが親であり、DBC_USER_PROFILEが子であるように見えます。したがって、DBC_USER_PROFILEテーブルに外部キーを宣言し、DBC_USERテーブルを参照します。 1対Mの関係で何かのように(Oracle構文)

CREATE TABLE dbc_user_profile (
    user_id int primary key, 
    <<more columns>> 
    constraint fk_user_profile_user_id foreign key (user_id) 
    references dbc_user(user_id) 
) 

は、それがどのテーブル、一般的にはかなり明確な親で、どの子です。親は、子のm行に対して1つの行を持ちます。したがって、子テーブルに外部キーを宣言し、親テーブルを参照します。

CREATE TABLE parent (
    parent_id int primary key, 
    <<additional columns>> 
); 

CREATE TABLE child (
    child_id int primary key, 
    parent_id int references parent(parent_id), 
    <<additional columns>> 
); 

m対mの関係の場合、外部キーはマッピングテーブルで定義され、2つの親テーブルを参照します。したがって、外部キーはDBC_USER_CITYテーブルで宣言され、DBC_USERDBC_CITYの両方を参照します。何かのように

CREATE TABLE dbc_user_city (
    city_id int, 
    user_id int, 
    constraint pk_dbc_user_city primary key(city_id, user_id), 
    constraint fk_dbc_user_city_city_id foreign key(city_id) 
    references dbc_city(city_id), 
    constraint fk_dbc_user_city_user_id foreign key(user_id) 
    references dbc_user(user_id) 
) 

明らかに、構文は比較的データベース特有の傾向があります。特にOracleの場合、PSOUG siteに構文オプションの完全なリストがあります。さまざまなデータベースの構文を含むより一般的なリファレンスについては、w3schools siteを使用できます。

+0

私はw3schoolsを攻撃するつもりですが、迅速かつポイントまで、ありがとうございます。わたしの理解から、彼らは助けたよりもずっと迷っています。 – Dan

関連する問題