P粉3216766402023-09-06 12:42:54
列 affiliate_sales
を VARCHAR(100)
に変更します。
これが transaction(_id)
の外部キーである場合、100 文字を超える文字列を保持できないため、VARCHAR(2000)
である必要はありません。ともかく。
この操作を実行する前に、現在列に 100 文字を超える文字列がないことを確認してください。
コメントへの返信:
「配列」(つまり、カンマ区切りのリストを含む文字列) を列に格納する予定がある場合は、いずれにしても外部キーを作成できないことを理解しておく必要があります。外部キーには、 値と transaction テーブル内の行を関連付ける列が必要です。外部キー制約を追加すると、列に格納できる ID は 1 つだけになります。
affiliate_stats と
transaction の間には確かに多対多の関係があるようです。多対多の関係をモデル化するには 3 番目のテーブルが必要です。
P粉1470452742023-09-06 00:41:33
varchar(2000)
2000 文字を格納しますが、各文字は必ずしも 1 バイトであるとは限りません。 a、1、? などの単純なヨーロッパ文字はすべて 1 バイトです。ただし、ü または å または َََُِِّْ は複数バイトを占めます。
文字列型が同じ長さである必要はない可能性があります 。
ただし、これは必須ではありません。キーは 100 文字を超えることはできません。主キーは varchar(100) であるため、外部キーは 100 文字を超えることはできません。
この列には 2 つの異なるタイプのデータを保存したいようです。 1 つは特定の配列タイプで、もう 1 つは外部キーです。あなたはできません。 外部キー 各 値に一致する主キー値があることを確認します。
自動インクリメント主キー を使用してテーブルをリンクします。よりシンプルで高速で、使用するストレージが少なく、明確で決して変更されません。
両方のテーブルの主キーとして新しい列を追加します。それからそれを引用します。
代わりに、各affiliate_stats行が複数のaffiliate_salesに対応する場合は、
結合テーブルが必要です。これは 1 対多の関係と呼ばれます。アフィリエイト統計の 1 行は、多くのアフィリエイト_セールスに関連しています。 リーリー
次に、affiliate_stats 行に追加するそれぞれのaffiliate_sale の行を、affiliate_stats_sales に挿入します。リーリー
売上と統計データは、このテーブルを結合することによって関連付けられます。たとえば、100 個の販売の統計を表示したい場合。リーリー
最初は少し難しいですが、非常に強力です。これがリレーショナル データベースの仕組みです。