2

일반적으로 이전에 시스템이 설계되었으므로 데이타베이스는 공정한 비트()로 작업했습니다.외래 키, 관계에 따라 다름

나는 유일한 개발자로 프로젝트를 진행하고, 응용 프로그램 개발 및 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 대 1, 1 - 투 - mm-에-m 관계와 FK 참조?

답변

4

외부 키는 자식 테이블하고 부모 테이블에 선언됩니다.

일대일 관계에서는 DBC_USER이 부모이고 DBC_USER_PROFILE이 자식 인 것처럼 보입니다. 따라서 외래 키를 DBC_USER_PROFILE 테이블에 선언하고 DBC_USER 테이블을 참조하십시오. 1에-m 관계처럼 뭔가 (오라클 구문)

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-to-m 관계의 경우, 외래 키는 매핑 테이블에 정의되고 두 개의 상위 테이블을 참조합니다. 따라서 외부 키는 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) 
) 

분명히 구문은 상대적으로 데이터베이스와 관련이 있습니다. 특히 오라클의 경우 PSOUG site에 구문 옵션의 전체 목록이 있습니다.다양한 데이터베이스의 구문을 포함하는보다 일반적인 참조는 w3schools site을 사용할 수 있습니다.

+0

w3schools를 공격 하겠지만 신속하고 중요한 시점입니다. 내 이해에서, 그들은 도왔던 것보다 더 많이 그릇된 길을 인도했습니다. – Dan