2

私のフォーム構造はこのようなもので、フォームfields[]の送信時に何度でも入力を追加できます。ここでは、Web サイトのリンクを に保存していfields[]ます。

<input id="name" name="name" type="text" />
<input id="field_1" name="fields[]" type="text" />
<input id="field_2" name="fields[]" type="text" />
<input id="field_3" name="fields[]" type="text" />

以下のテーブル構造を使用してこのデータをMySQLデータベースに保存し、ユーザーを無制限の数のWebサイトに関連付けることができました。

Users       User_website_link     Websites
------      -----------------     ---------
Pk:UserID   Pk:ID               Pk:WebsiteId
name        UserID              Url
            WebsiteID

ユーザーがフォーム {"Jon", "example.com", "example1.com", "example2.com" } に次のデータを入力するとします。

したがって、フォームテーブルを送信すると、次のようになります。

ユーザー テーブル:

UserID   Username
1         Jon

Web サイト表:

WebsiteID      Url
1               example.com
2               example1.com
3               example3.com

User_website_link テーブル:

ID   UserID    WebsiteId
1     1         1
2     1         2
3     1         3

URL を送信した後、ユーザーが URL を編集できるようにするにはどうすればよいですか?

私の質問は次のとおりです。John というユーザーが を削除example3.comして編集example.comdemo.comたいので、データベースからいくつかの Web サイトを削除し、いくつかを編集する方法を知りたいです。

4

2 に答える 2

2

user_website_link テーブルは必要ありません。Web サイト テーブルの別の列に UserID を入れるだけです。

しかし、質問に答えるには:

エントリを編集する必要はありません。ブール値のような別の列を追加し、falseis_deletedを持つ URL のみを表示または使用するだけです。is_deletedしたがって、ユーザーに編集用の URL を追加してもらい、is_deletedそれらを削除するときに を設定するだけです。もちろん、削除時にその行を削除するか、削除した行を後でクリアすることもできますが、この方法の方が少し簡単だと思います。

于 2012-08-18T10:23:09.990 に答える
1

@bearbin が言ったように、この構造では、誰も Web サイトを所有していないため、一方が編集し、もう一方がそれを望まない場合、どのように対処しますか。あなたの構造では、あなたが持つことができるのはinsertdelete.

ユーザーがウェブサイトを所有するようにするには、構造を次のように変更する必要があります

Websites(WebsiteID, URL, UserID)

UserID外部キーはどこにありますか。このWebsiteID場合、 は各ユーザーに固有になります。

于 2012-08-18T10:33:28.900 に答える