xampp - mysql テーブルに主キーを挿入できません

okwaves2024-01-25  8

私は SQL の完全な初心者で、顧客テーブルと予約テーブルがある mysql xampp サーバーを使用しています。これらのテーブルを作成するコードを生成するには、ddl を備えた mysql データ モデラーを使用します。 以下に 2 つのテーブルを作成する方法を示します。

予約テーブル:

CREATE TABLE booking (
    booking_id             INTEGER NOT NULL,
    b_city                 VARCHAR(30),
    b_date                 DATETIME,
    departure_date         DATETIME,
    arrival_date           DATETIME,
    dep_time               DATETIME,
    arr_time               DATETIME,
    seat_type              VARCHAR(30),
    flight_cost            DOUBLE,
    total_cost             DOUBLE,
    booking_state          VARCHAR(2),
    deposit                DOUBLE,
    price_remenant         DOUBLE,
    customer_customer_id   VARCHAR(20) NOT NULL,
    flight_id              INTEGER,
    customer_customer_id1  VARCHAR(20) NOT NULL //I don't know why this is created again 
);

CREATE UNIQUE INDEX booking__idx ON
    booking (
        customer_customer_id
    ASC );

ALTER TABLE booking ADD CONSTRAINT booking_pk PRIMARY KEY ( booking_id );
ALTER TABLE booking
    ADD CONSTRAINT booking_customer_fk FOREIGN KEY ( customer_customer_id )
        REFERENCES customer ( customer_id );

ALTER TABLE booking
    ADD CONSTRAINT booking_customer_fkv2 FOREIGN KEY ( customer_customer_id1 )
        REFERENCES customer ( customer_id );

顧客テーブル:

CREATE TABLE customer (
    customer_id         VARCHAR(20) NOT NULL,
    first_name          VARCHAR(20),
    last_name           VARCHAR(30),
    booking_booking_id  INTEGER NOT NULL
);

CREATE UNIQUE INDEX customer__idx ON
    customer (
        booking_booking_id
    ASC );

ALTER TABLE customer ADD CONSTRAINT customer_pk PRIMARY KEY ( customer_id );

ALTER TABLE customer
    ADD CONSTRAINT customer_booking_fk FOREIGN KEY ( booking_booking_id )
        REFERENCES booking ( booking_id );

これで、入力して mysql xampp サーバーに顧客を挿入しようとするたびに

INSERT INTO customer('customer_id')VALUE("1234"); 

エラー #1452 - 子行を追加または更新できません: 外部キー制約が失敗します (airline_db.customer, CONSTRAINT customer_booking_fk FOREIGN KEY (booking_booking_id) REFERENCES Booking (booking_id)) が表示されます。customer_id 以来、理由がわかりません。は主キーで、Booking.customer_id は外部キーですが、なぜbooking_idがこのエラーに含まれるのかわかりませんまたは これは、私のエンティティがデータ モデラーでどのように見えるかにもなります:

ご協力をよろしくお願いいたします。



------------------------

そのような値は挿入できません

CREATE TABLE customer (
    customer_id         VARCHAR(20) NOT NULL,
    first_name          VARCHAR(20),
    last_name           VARCHAR(30),
    booking_booking_id  INTEGER NOT NULL
);

少なくとも 1 つのbooking_id を入力する必要があることを意味します。ただし、デフォルト値がないため、NULL にすることはできません。

また、外部キーは、顧客に行を追加する前に、予約時にそのような ID を保存する必要があることを意味します

最後にさらに問題があります。customer_id を持っている場合にのみ予約を追加でき、その逆も同様であるため、customer_id の制約を取り除く必要があります。

2

顧客のbooking_id外部キーを削除する必要があるということですか?どの制約ですか?

– ヴァシレイオス・ケントス

2020 年 9 月 4 日 7:25

はい。1 人の顧客が多数の予約を持つことができますが、1 つの予約で持つことができる顧客は 1 人だけです。

– nbk

2020 年 9 月 4 日 7:29

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。