2

私は自分のサーバー上にsqlDBを作成したいと思っています。私は、db開発に非常に慣れておらず、数年前にここでコーディングを少しだけ行っただけです。相互に参照する4つのテーブルを持つデータベースを構築しようとしています。

これは、私が達成しようとしていることについてより良いアイデアを提供するために、各テーブルが作成されたものです。

このテーブルをグループ 化すると、他のユーザーがフォローできるようにユーザーが作成したハブが格納されます。

ユーザー は、グループの作成およびグループへの参加時に使用されるユーザーの詳細を保存します

//この次のものが良いアイデアかどうかはわかりませんが、誰かがそれについて何をしているのか教えてくれるといいのですが、 userGroups このテーブルにはすべてまたはグループとユーザー接続が格納されます。ユーザーがグループに参加すると、そのIDはグループIDとともに保存されます。

は、返される結果の数を制限するために使用されます

DBで実行したいコードを作成しました。外部キーを正しく作成したかどうかはわかりませんが、アドバイスをいただければ幸いです。

CREATE DATABASE tempDB
USE tempDB

CREATE TABLE Group (groupID UInt32 PRIMARY KEY, userID UInt32 references User(SID), country VARCHAR(20) references Country(SID));

CREATE TABLE User (userID UInt32 PRIMARY KEY, name VARCHAR(20), country VARCHAR(20) references Country(SID));

CREATE TABLE userGroups (userID references User(SID), groupID UInt32 references Group(SID));

CREATE TABLE countries (countryName VARCHAR(20) PRIMARY KEY);

だから3つの質問:

  1. テーブルUserGroupsは価値がありますか?
  2. 外部キーを正しく作成しましたか?
  3. このコードは、4つのテーブルを含むDBを作成しますか...
4

2 に答える 2

2

ユーザーが多くのグループに参加でき、多くのユーザーがグループに参加できる場合は、グループテーブルのuseridフィールドへの列と外部キー参照をドロップします。usergroupsテーブルは、この多対多のマッピングを処理します。

現在の設定は、各グループに1人の「所有者」ユーザーもいると言った場合にのみ意味があります...

また、どのDBエンジンを使用していますか?Innodbまたはmyisam...myisamの外部キーが、制約を適用する機能のない他のインデックスと同じように冗談である場合、したがって、宣言しようとしてもあまり役に立ちません。

于 2012-07-16T03:52:31.400 に答える
1
  • 外部キーを持つテーブルを作成する前に、そのテーブルを作成する必要があります。
  • Country(SID)- テーブル Country とフィールド SID はありません
  • 国テーブルには、主キーとして id フィールドが必要です。
  • 外部キーを使用するには、エンジン =INNODB を指定する必要があります
  • 外部キーでテーブルが作成されているかどうかを確認するには

    mysql> Show tables // Shows all created table
    mysql> desc tableName  // to see the structure of the created table    
    
于 2012-07-16T04:47:41.293 に答える