ユーザ同士を関連づけるDB設計
二人のシフトを管理できるiOSアプリを作成しようと考えています。
システム構成的には、クライアントサイドはswift3で実装して、サーバサイドはgoからDBを操作しようと考えていました。
そこで、DB設計をしていたのですが、二人のリレーションをどうやって定義すれば良いかという問題に当たりました。
僕が考えた候補は二つあり
CREATE TABLE `users` (
`id` INTEGER AUTO_INCREMENT,
`name` VARCHAR(255),
`uuid` VARCHAR(255),
PRIMARY KEY (`id`)
);
CREATE TABLE `pairs` (
`id` INTEGER AUTO_INCREMENT,
`user1_id` INTEGER,
`user2_id` INTEGER,
PRIMARY KEY (`id`),
FOREIGN KEY (`user1_id`) REFERENCES `users`(`id`),
FOREIGN KEY (`user2_id`) REFERENCES `users`(`id`)
);
のようにユーザ間のリレーションを定義するテーブルを作成するか、
CREATE TABLE `users` (
`id` INTEGER AUTO_INCREMENT,
`name` VARCHAR(255),
`uuid` VARCHAR(255),
`partner_id` INTEGER,
PRIMARY KEY (`id`),
FOREIGN KEY (`partner_id`) REFERENCES `users`(`id`)
);
のように一つのテーブルで自身のテーブルを参照する、という感じです。
どちらの方が扱い安く、スマートでしょうか?
また、もっといい設計があれば教えていただきたいです。
また、iOSでデータベースを扱うのにはRealmが一般的だと思いますが、
複数のiOSの端末間で扱う場合はサーバを立ててDBを扱うやり方で大丈夫でしょうか?
ご回答お待ちしております。