0
시험 준비 중이고 필자가 작성한 예제 작업을하기로 결정했지만 특정 경우에만 붙어 있습니다. 관계. 나는 약간의 진전없이 3-4 시간 동안 SQL의 벽에 머리를 댄다. 나는 일대일 방식과 일대 다 방식의 관계를 생성하고자하는 2 개의 테이블을 가지고 있습니다.MySQL의 테이블 간의 일대일 및 일대 다 관계 만들기
CREATE TABLE article (
price INT(30) NOT NULL,
published_on DATE NOT NULL
);
CREATE TABLE tag(
descption VARCHAR(30) NOT NULL,
priority INT(30) NOT NULL
);
CREATE TABLE category(
date_created_on DATE NOT NULL,
name VARCHAR(30) NOT NULL
);
INSERT INTO article VALUES (10.0, "2001-01-01", 0);
INSERT INTO article VALUES (20.0, "1992-05-08", 0);
INSERT INTO tag VALUES ("wtf", 1, 1);
INSERT INTO tag VALUES ("is this", 2, 2);
ALTER TABLE article ADD article_id INT(30) NOT NULL;
ALTER TABLE article ADD PRIMARY KEY(article_id);
ALTER TABLE article MODIFY article_id AUTO_INCREMENT;
ALTER TABLE tag ADD tag_id INT(30) NOT NULL;
ALTER TABLE tag ADD PRIMARY KEY(tag_id);
ALTER TABLE tag MODIFY tag_id AUTO_INCREMENT;
ALTER TABLE tag ADD FOREIGN KEY (tag_id) REFERENCES (article_id);
나는 한 기사는 기사 하나에 하나를 가질 수 있도록, 그것을 만들기 위해 다음 그렇게 기사 카테고리 많은에 하나를 가지고 있는지 확인하고 싶습니다. 나는 하나에서 많은 것을 시도하기 위해 일대일을 할 수 없습니다. 어떻게하면 좋을지, 관계가 어떻게 작동 할 것인가에 대한 통찰력을 좀 주시겠습니까? 여기
는 데이터베이스 내부에서 정보입니다 -mysql> select * from Tag;
+-------------+----------+--------+
| description | priority | tag_id |
+-------------+----------+--------+
| wtf | 1 | 1 |
| is this | 2 | 2 |
+-------------+----------+--------+
mysql> select * from Article;
+-------+--------------+------------+
| price | published_on | article_id |
+-------+--------------+------------+
| 10 | 2001-01-01 | 7 |
| 20 | 1992-05-08 | 8 |
+-------+--------------+------------+
mysql> describe Article;
+--------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+---------------+------+-----+---------+----------------+
| price | decimal(30,0) | YES | | NULL | |
| published_on | date | YES | | NULL | |
| article_id | int(30) | NO | PRI | NULL | auto_increment |
+--------------+---------------+------+-----+---------+----------------+
mysql> describe Tag;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| description | varchar(30) | NO | | NULL | |
| priority | int(30) | NO | | NULL | |
| tag_id | int(30) | NO | PRI | NULL | |
+-------------+-------------+------+-----+---------+-------+ mysql> select * from Tag;
+-------------+----------+--------+
| description | priority | tag_id |
+-------------+----------+--------+
| wtf | 1 | 1 |
| is this | 2 | 2 |
+-------------+----------+--------+
mysql> select * from Article;
+-------+--------------+------------+
| price | published_on | article_id |
+-------+--------------+------------+
| 10 | 2001-01-01 | 7 |
| 20 | 1992-05-08 | 8 |
+-------+--------------+------------+
mysql> describe Article;
+--------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+---------------+------+-----+---------+----------------+
| price | decimal(30,0) | YES | | NULL | |
| published_on | date | YES | | NULL | |
| article_id | int(30) | NO | PRI | NULL | auto_increment |
+--------------+---------------+------+-----+---------+----------------+
mysql> describe Tag;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| description | varchar(30) | NO | | NULL | |
| priority | int(30) | NO | | NULL | |
| tag_id | int(30) | NO | PRI | NULL | |
+-------------+-------------+------+-----+---------+-------+
그리고 이것은 내가 외래 키 생성을위한 얻을 오류입니다 :
mysql> ALTER TABLE Tag ADD FOREIGN KEY(tag_id) REFERENCES Article(article_id);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`exam_example`.`#sql-2836_1`,
CONSTRAINT `#sql-2836_1_ibfk_1` FOREIGN KEY (`tag_id`) REFERENCES `Article` (`article_id`))
SQL은 두 개의 테이블'category'와'tag'를 생성하지만,'INSERT'와'ALTER' 문장은'article' 테이블을 참조하고 있습니다. 또한'CREATE' 문으로'ALTER' 문을 굴려 보는 것이 어떻습니까? – deanosaur
@deanosaur 공정한 포인트. 나는 나의 진술을 연습하고있다. 내가 처음부터 거기에있는 열쇠없이 일대일 일을 할 수 있어야한다고 생각합니다. 당신이 그것이 내가 그들을 둔 곳에 변화를 줄 것이라고 생각합니까? –
문제의 매개 변수가 정확히 무엇인지 조금 더 설명해 주시겠습니까? 나는 너를 도울 수 있을지도 모르지만 나는 아직도 그 질문이 무엇인지 100 % 명확하지 않다. – user3485980