Поддержание столбца для каждого типа данных


У меня есть функция, которая является, предполагают, чтобы хранить переменные в зависимости от их типа данных, и эта таблица у меня есть придумать, чтобы сохранить эти переменные в.

Это умнее, чтобы все разбиты, как это ни было бы разумнее всего иметь столбцы для крупнейшего по величине тип группы (такие как строковые типы данных только MEDIUMTEXT)? Я жду эту таблицу, чтобы быть довольно большими, и я хотел бы, чтобы столы дискового пространства требует как можно меньше.

CREATE TABLE IF NOT EXISTS form_part_detail(
form_part_detail_id  INT NOT NULL    AUTO_INCREMENT  PRIMARY KEY,
form_part_detail_type_id   INT NOT NULL,
label   VARCHAR(255) NOT NULL,
`string`    VARCHAR(255)  NULL,
`text`   TEXT   NULL,
`mediumtext`    MEDIUMTEXT NULL,
`integer`   INT NULL,
`boolean`   TINYINT(1)  NULL,
`float` FLOAT NULL,
`double`    DOUBLE NULL,
FOREIGN KEY (form_part) REFERENCES `form_part` (form_part_id)
FOREIGN KEY (form_part_detail_type_id) REFERENCES `form_part_detail_type` (form_part_detail_type_id)
);


292
3
задан 19 мая 2011 в 01:05 Источник Поделиться
Комментарии
1 ответ

Я бы, наверное, решать это вот так:


  1. База данных будет иметь несколько столбцов:


    • идентификатор

    • метки

    • данных (некоторого типа, скажем, типа varchar сейчас)


  2. На обертке класс будет использоваться для хранения/извлечения данных из базы данных:


    • Отвечает за преобразование (сериализации) от любого типа необходимо, чтобы данные внутреннего хранилища


В обертке класса может иметь некоторые логические проверки, так что вы не могли попросить int, если это действительно была строка, и т. д. и т. п.

Это, вероятно, не удовлетворит твои "хранение вещей как можно меньше" требование, но диск писк.

Вы могли бы создать объект и в основном сериализовать и хранить сериализованный версии в базе данных. Затем можно десериализовать, что когда вам нужно.

2
ответ дан 20 мая 2011 в 01:05 Источник Поделиться