Перейти к содержимому


- - - - -

Вопрос по структуре таблицы в MySQL


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1 PASHAxAHSAP

PASHAxAHSAP
  • Пользователь

  • Пользователь
  • 186 сообщений

Отправлено 07.09.2009 - 18:52

Добрый день!
Есть таблица, где записаны значения для  пар Xn-Yn (но при этом для некоторых X и Y значения могу не быть установленными).
Т.е. свои названия имеют и строки X1, X2, X3, и столбцы Y1, Y2, Y3 ?  
Как её реализовать в SQL без излишнего дублирования данных ?



     Y1 Y2 Y3
X1  A   B   C
X2  D   -    F
X3  J    H   -


Можно убрать Y1, Y2, Y3 и записать просто
X1 X2 X3
A   D   J
B   -   H
C   F    -

и отдельно учитывать, что первая строка соответствует Y1, вторая Y2, третья Y3...
Может быть, как-то более нормально это можно сделать, как в экселе ?

#2 Vipous

Vipous
  • Великий и Могучий

  • Power User
  • 1 899 сообщений
  • Пол:Мужчина
  • Город:Солнцево

Отправлено 07.09.2009 - 21:39

Одна таблица из 3 полей
X,Y,V
данные вида
X1,Y1,A
X1,Y2,B

По X Y уникальный или первичный ключ

#3 drnet

drnet
  • ♞♞♞♞♞♞♞♞♞

  • Динозавр Форума
  • 8 810 сообщений
  • Пол:Мужчина
  • Город:
  • Интересы:В детстве был конструктор Лего, увлечение осталось.<br />Создал свой Лего для взрослых :)

Отправлено 08.09.2009 - 17:59

Лучше сделать так как в предыдущем посте, но
сделать отдельный первичный ключ для таблицы, а
столбцы
X1,Y1
X2,Y2 сделать unique key.
Но имеем в виду, что возможны ошибки из-за null в полях уникального ключа.
Но null во втором столбце не будет выдавать ошибку duplicate key, если первый столбец уникален, а при SELECT можно сделать выборку так, что строки с null в одном из полей просто не будут отображаться.
Реализовывать по другому нельзя, так как упадёт производительность.

#4 travanna

travanna
  • Пользователь

  • Пользователь
  • 136 сообщений

Отправлено 08.09.2009 - 19:33

Кстати, рекомендую САМУЮ УНИВЕРАЛЬНУЮ таблицу, в которой можно хранить не только эксель, а вообще ВСЕ НА СВЕТЕ:

CREATE TABLE ALL(
    GUID:CHAR(16),
    OBJECT:BLOB
) PRIMARY KEY GUID

#5 drnet

drnet
  • ♞♞♞♞♞♞♞♞♞

  • Динозавр Форума
  • 8 810 сообщений
  • Пол:Мужчина
  • Город:
  • Интересы:В детстве был конструктор Лего, увлечение осталось.<br />Создал свой Лего для взрослых :)

Отправлено 08.09.2009 - 23:00

Просмотр сообщенияtravanna (8 Сентября 2009, 20:33) писал:

Кстати, рекомендую САМУЮ УНИВЕРАЛЬНУЮ таблицу, в которой можно хранить не только эксель, а вообще ВСЕ НА СВЕТЕ:

CREATE TABLE ALL(
    GUID:CHAR(16),
    OBJECT:BLOB
) PRIMARY KEY GUID
Вообще-то тут про mysql)))
Вот пример таблицы. Названия полей записываем в `valueindex` с разделителем.
Текстовые данные  `stringdata`
Все картинки и прочую фигню в `binarydata`. Но это снижает производительность приложения.

  CREATE TABLE IF NOT EXISTS test1(
  `col_pkey` BINARY(16) NOT NULL,
  `valueindex` LONGTEXT ,
  `stringdata` LONGTEXT ,
  `binarydata` LONGBLOB,  
  PRIMARY KEY (`col_pkey`)
  );




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых пользователей