2015-08-04 2 views
3

Я создаю структуру БД по диаграмме E/R, но я застрял с некоторых дней по этой проблеме. Возможно, я ошибаюсь в том, как я это делаю, поэтому, если вы думаете, что я могу сделать это лучше, было бы прекрасно :)Застрял в структуре базы данных со многими типами таблиц

Сценарий: У меня есть N пользователей, которым принадлежат N датчиков, не все датчики (в будущем могут увеличиться до 300 видов датчиков) имеют одинаковые функции (столбцы), поэтому я полагаю, что мне нужна таблица для каждого датчика, а затем список внутри собранных значений.

structure

У меня есть некоторые сомнения относительно того, как referentiate в tabless для «вид датчика» - «Датчики» Wich колонки я должен положить на стол «датчик», и в этом случае я буду получать много таблиц. Есть ли у вас какие-либо намеки?

+0

Я думаю, что вы должны перечислить все функции в виде столбцов в одной таблице и датчик, который не имеет конкретной функции, ячейка для этой функции должна быть установлена ​​в нуль. –

+0

@DrewPierce Пользователь может иметь от 1 до N датчиков. Если я использую столбцы, я мог бы, вероятно, получить 300 столбцов, где для каждой строки это всего лишь одна или две ячейки, которые не нулевые. Это хорошо? И таблицы здесь - всего лишь эскиз, поэтому я очень открыт, чтобы начать заново :) – xunga

+0

@DrewPierce Это наоборот. 2 или 3 столбца, заполненные только для каждой строки. Значение почти 297 нулей для каждой строки. Btw В ближайшем будущем у меня может быть 50 типов, но в долгосрочной перспективе можно масштабировать до 300. – xunga

ответ

0

Вы должны добавить новую таблицу, например. sensor_type для всех датчиков, где каждая строка будет датчиком с uniq id, который может быть добавлен пользователю.

Идея состоит в том, чтобы отделить датчики с типом или чем-то еще, что является наиболее распространенным избитым датчиком.

1

Может быть, лучше ввести многие из многих взаимосвязей между датчиками и функциями, которые у них есть? Например, как это:

Sensors 
sensor_id (pk) 
type 

Features 
feature_id (pk) 
name 

SensorsFeatures (Ownership table) 
sensor_id (foreign key to Sensors.sensor_id) 
feature_id (foreign key to Features.feature_id) 

Если вам нужно сохранить значения этих характеристик (вес, высота, ширина, ...), вы можете сделать это в SensorsFeatures таблице.

+0

На самом деле то, что я ощущаю по функциям, это разные данные.:( – xunga

+0

Приведите пример любого из этих функций. – Vasily

+0

Если у вас есть все права, вам также нужно сохранить значения этих функций, если это так, вы можете сделать это в таблице SensorsFeatures в каком-либо поле, например, «value». – Vasily

1

Простейшее и простой способ сделать это, чтобы сделать все конкретные столбцы в таблице «датчики» и имеет один внешний ключ другой таблицы «SENSOR_TYPE», которая состояла из 2-х колонка

table "sensor_type" 
id_type - identifier (primary key) 
description - description of your sensor (heat, temperature sensor ...) 

сенсора стола то выглядит как

table "sensor" 
id_sensor      identifier (primary key) 
id_type       foreign key references sensor_type table 
size       default null, if type 2 or 3 then something 
weight       default null, if type 1 and 3 then something 
etc... 

Необходимо понять, что это, вероятно, одно из многих решений, которые могут решить вашу проблему. Я надеюсь, что это помогает.

Смежные вопросы