2013-07-12 3 views
1

Я занимаюсь разработкой/проектированием небольшой системы для отслеживания серверов, приложений на этих серверах и для каждого приложения, какие среды существуют на сервере. У меня есть быстрый вопрос о хороших шаблонах/практиках дизайна.SQL Tables - Является ли эта конструкция приемлемой/хорошей практикой?

У меня есть 3 таблицы, по одному для каждого объекта. Они (сокращенно) следующим образом:

Server 
Id : int 

Application 
Id : int 

Environment 
Id : int 

Теперь мой вопрос:

было бы приемлемо, чтобы создать соединяющую таблицу как таковой:

AppServerEnvironments 
ServerId : int 
ApplicationId : int 
EnvironmentId : int 

Или это лучшая практика для создания двух соединяющих таблиц как таковых:

ApplicationServer 
ServerId : int 
ApplicationId : int 

ApplicationEnvironment 
ApplicationId : int 
EnvironmentId : int 

Я пробовал идти со вторым вариантом, но не могу показаться чтобы выяснить, как правильно соединить все 3 таблицы.

Любые ввод/руководство очень ценятся.

Спасибо!

+0

Является ли окружающая среда атрибут сервера? – JNK

+0

да - я бы сказал, что ServerEnvironment. ApplicationEnvironemnt может иметь другое значение - например, что нужно для правильной работы приложения. (но не обязательно, что находится на машине в данный момент). – Randy

+0

Каждый сервер может содержать много приложений. Каждое приложение может иметь множество сред. Например, AppA может жить на ServerA, ServerB и Server C. На каждом сервере AppA может иметь EnvA , EnvB и EnvC. – dpCode

ответ

0

зависит от цели. Если вам нужно, чтобы все три ключа присутствовали в соединениях, вы должны пойти на решение AppServerEnvironments. Если пара Server/Application не требует Enviroment, или Application/Environment не требует Server, то лучше всего использовать решение . Таким образом, вы можете определить составные первичные ключи в таблицах без значений NULL.

+0

В моем случае приложение env combo всегда будет существовать на сервере. DEV-среда AppA будет жить на одном или нескольких серверах. Окружающая среда QA AppB будет жить на одном или нескольких серверах Среда DEV AppA и среда QA AppB могут существовать на одном сервере (серверах). – dpCode

1

так что вы бы что-то вроде этого:

application 
----------- 
application_id 

server 
----------- 
server_id 

application_instance 
--------------------- 
application_id 
instance_id 
name <- name this one DEV, or PROD etc. 
description <- here describe the use of the DEV system 

теперь говорят, который один живет, где ...

server_instance 
--------------- 
server_id 
instance_id 
Смежные вопросы