回答編集履歴

2

調整

2024/09/20 08:39

投稿

yambejp
yambejp

スコア116450

test CHANGED
@@ -1 +1,34 @@
1
1
  できないことはないと思いますが管理も煩雑ですし効率も悪いので、typeでこねくりまわさずに普通にテーブルをわけて正規化した方がよいでしょう。
2
+
3
+ # 参考
4
+ users,teams,hobbiesの独立したテーブルがあり
5
+ users=teams、users=hobbiesをリレーションさせるために中間テーブルを作るというのではればこんな感じ
6
+ ```SQL
7
+ create table teams(tid int primary key ,title varchar(20));
8
+ insert into teams values(1,'giants'),(2,'tigers');
9
+
10
+ create table users(uid int primary key ,name varchar(20),age int,title varchar(20));
11
+ insert into users values
12
+ (1,'tanaka',25,'pitcher'),
13
+ (2,'nakata',30,'catcher');
14
+
15
+ create table hobbies(hid int primary key,title varchar(20));
16
+ insert into hobbies values
17
+ (1,'fast'),
18
+ (2,'correct'),
19
+ (3,'carefully'),
20
+ (4,'pinch hitter');
21
+
22
+ create table user_team(uid int not null,tid int not null,primary key(uid,tid) );
23
+ insert into user_team values(1,1),(2,2);
24
+
25
+ create table user_hobby(uid int not null,hid int not null,primary key(uid,hid) );
26
+ insert into user_hobby values(1,1),(2,2);
27
+
28
+
29
+ select * from users as t1
30
+ left join user_team as t2 on t1.uid=t2.uid
31
+ left join teams as t3 on t2.tid=t3.tid
32
+ left join user_hobby as t4 on t1.uid=t4.uid
33
+ left join hobbies as t5 on t4.hid=t5.hid
34
+ ```

1

ついき

2024/09/20 06:44

投稿

yambejp
yambejp

スコア116450

test CHANGED
@@ -1 +1 @@
1
- できないことはないと思いますが、typeでこねくりまわさずに普通にテーブルをわけて正規化した方がよいでしょう。
1
+ できないことはないと思いますが管理も煩雑ですし効率も悪いので、typeでこねくりまわさずに普通にテーブルをわけて正規化した方がよいでしょう。