現在、カスタマイズ可能なフォームスクリプトを開発しており、ユーザーはカスタム フォームに新しいフィールドを作成できるようになります。
そのためのMySQLテーブル構造を作成する方法は? そして、YAML を知っていれば役に立ちますか?
現在、カスタマイズ可能なフォームスクリプトを開発しており、ユーザーはカスタム フォームに新しいフィールドを作成できるようになります。
そのためのMySQLテーブル構造を作成する方法は? そして、YAML を知っていれば役に立ちますか?
大まかな概要...
これは、複数のフォームを持つ1人のユーザーと、複数のフィールドを持つ1つのフォームに基づく単純なスキーマです。もちろん、これらの提案されたフィールドにフィールドを追加することもできます。実際には、必須フィールドは「_id」で終わるフィールドだけです。
User:
columns:
user_id: { type: integer, primary: true, notnull: true }
email: { type: string(80) }
password: { type: string(80) }
Form:
columns:
form_id: { type: integer, primary: true, notnull: true }
user_id: { type: integer, notnull: true }
title: { type: string(80) }
is_active: { type: boolean, notnull: true, default: 1 }
relations:
User: { onDelete: CASCADE, local: user_id, foreign: user_id, foreignAlias: Forms }
Field:
columns:
field_id: { type: integer, primary: true, notnull: true }
form_id: { type: integer, notnull: true }
field_name: { type: string(80) }
field_type: { type: enum, values: [ String, Integer, Float, LongText, Boolean] }
field_value: { type: string(80) }
relations:
Form: { onDelete: CASCADE, local: form_id, foreign: form_id, foreignAlias: Fields }
上記の YAML によって生成された MySQL データベース:
CREATE TABLE
field
(
field_id
bigint(20) NOT NULL DEFAULT '0',
form_id
bigint(20) NOT NULL,
field_name
varchar(80) DEFAULT NULL,
field_type
enum('String','Integer','Float','LongText','Boolean') DEFAULT NULL,
field_value
varchar(80) DEFAULT NULL,
PRIMARY KEY (field_id
),
KEYform_id_idx
(form_id
),
CONSTRAINTfield_form_id_form_form_id
FOREIGN KEY (form_id
) REFERENCESform
(form_id
) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;CREATE TABLE
form
(
form_id
bigint(20) NOT NULL DEFAULT '0',
user_id
bigint(20) NOT NULL,
title
varchar(80) DEFAULT NULL,
is_active
tinyint(1) NOT NULL DEFAULT '1',
PRIMARY KEY (form_id
),
KEYuser_id_idx
(user_id
),
CONSTRAINTform_user_id_user_user_id
FOREIGN KEY (user_id
) REFERENCESuser
(user_id
) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;CREATE TABLE
user
(
user_id
bigint(20) NOT NULL DEFAULT '0',
password
varchar(80) DEFAULT NULL,
PRIMARY KEY (user_id
)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ユーザーにテーブル構造を変更してもらいたいですか?これは、mysqlの変更クエリを実行する必要があることを意味します。
ALTER TABLE the_table DROP COLUMN one_column
また
ALTER TABLE the_table ADD COLUMN another_column
そして、このクエリを実行する前に、テーブル構造をチェックするものでこれをラップする必要があります。テーブル変更クエリを実行すると、データ管理を実行できます。
変更する前にテーブル構造を確認する最良の方法は、システムテーブルを表示することだと思います
SELECT table_name, column_name, is_nullable, data_type, character_maximum_length
FROM INFORMATION_SCHEMA.Columns
WHERE table_name = 'the_table'
これにより、このテーブルのすべての列に関する情報が返されます。
これは役に立ちますか?