2009-07-15 3 views
11

웹 응용 프로그램 용 데이터베이스를 설계 중이며 구성 가능한 전역 설정에 대한 테이블을 갖고 싶습니다. 이 테이블을 디자인하기위한 모범 사례가 있습니까? 나는 두 가지 가능한 해결책을 생각할 수 있으며 다른 것들이 있어야한다고 확신합니다.글로벌 설정을위한 데이터베이스 테이블

가장 간단한 방법은 키/값 쌍을 문자열로 저장하는 것입니다. 이 방법은 두 개의 열만 사용하지만 개별 항목에 유형 제약 조건을 추가 할 수는 없습니다.

다른 접근법은 모든 설정에 대해 열을 추가하는 것이지만 전체 표에는 행이 하나만있어 약간 이상하게 느껴질 수 있습니다.

대부분의 경우 어떻게 처리 했습니까?

+0

어떤 플랫폼을 사용하십니까? 구성을 처리 할 때 플랫폼 특정 기능을 사용하는 것이 가장 좋을 수 있습니다. –

+0

현재 간단한 PHP/MySQL 설정으로 작업 중입니다. – captncraig

+0

나는 또한 데이터베이스를 사용하는 데 죽은 세트 아니에요. 거기에 좋은 비 데이터베이스 솔루션이 있다면, 나는 그것에 열려있는 것보다 더입니다. – captncraig

답변

8

현재 프로젝트에서 사용하는 것은 SYSPARMS라는 시스템 매개 변수 테이블입니다. 이 표는 주로 키/값 표입니다. 키와 값 모두에 대해 VARCHAR을 사용합니다. 이를 통해 우리는 키뿐만 아니라 값도 지정할 수 있습니다 (실제로 액션으로 변환됩니다).

우리는 응용 프로그램에 영향을 미치는 실시간 조정을 할 수 있기 때문에 DB를 사용하는 것을 좋아합니다. 예를 들어 시스템 유지 보수를 위해 시스템을 종료 할 때 값을 설정하면 사용자가 웹 응용 프로그램에 액세스 할 수 없습니다. 언제든지 앱을 배포하지 않고도이 기능을 켜거나 끌 수 있습니다.

+1

움직임이 두 번째입니다. 키 및 값 열은 문자열 일 수 있습니다. 데이터 유형을 정의하려는 경우 Andrew Siemer가 제안한 것을 수행하고 더 이상 문제를 해결할 수 있습니다. –

1

설정 방법은 YAML 파일이 아니라 데이터베이스 테이블이 아니라 키/값 쌍인 merb에 저장됩니다. 이는 사람이 읽을 수 있고 쉽게 파싱 할 수 있다는 장점이 있습니다. 할 수 있는.

0

테이블에 행이 하나만있을 경우 데이터베이스를 사용해야하는 이유는 무엇입니까? XML로 구성을 파일에 저장하십시오.

데이터베이스를 계속 사용해야하는 경우 데이터베이스의 한 테이블에있는 한 행의 열에 구성을 XML로 저장하십시오.

+3

분명 농담하는거야? XML을 데이터베이스에 집어 넣는 것은 무엇입니까? 그러면 키/값 테이블을 쉽게 만드는 방법은 무엇입니까? – ChssPly76

+0

당신은 ... 또는 3

+0

@ ChssPly76을 사용하여 XML에 형식 안전성을 추가 할 수 있습니다. 그것을 파일에 보관. –

1

내가 데이터베이스에서 수행하려는 경우이 작업을 수행하는 방식은 특성을 저장하는 것입니다. 속성에는 키/값 쌍이 있습니다. 그러나 그것은 또한 logging, siteConfig, externalReferences 등과 같은 속성 유형 (attributeTypes 테이블을 가리킴)을 가지고 있습니다. 그런 다음 속성 테이블에 보유 할 데이터 유형을 지정하는 AttributeType 레벨의 테이블을 가질 수도 있습니다. DataTypeID는 AttributeTypes와 함께 저장됩니다. 그런 다음 조회를 위해 DataTypes 테이블을 가리 킵니다. 그러면 숫자, 날짜, 문자열, xml 등으로 작업하고 있음을 알 수 있습니다. 필요한 경우 가장 유연함을 제공합니다.

1

ASP.Net에서는 이름/값 쌍으로 Web.Config 파일에 전역 구성 값을 저장할 수 있습니다.

+1

는 내 대답과 비슷하지만 설정 파일이 아니라 "데이터베이스"를 원했습니다. – djangofan

+0

에 동의했지만 방금 업데이트하고 PHP/MySql –

+0

@ djangofan을 사용하고 있다고 말하면서 그는 "데이터베이스"를 원한다고 언급했지만, 우리는 책임있는 응답자로서 "데이터베이스 테이블이 정말로 필요합니까? 멀리 설정 파일? " –

0

저는 STAii가 주장하는 YAML 접근법을 좋아합니다.

.NET 또는 Java 응용 프로그램 인 경우 XML을 고려하고 직렬화를 사용하여 사용자 설정의 인스턴스를 편리하게 가져올 수 있습니다.

1

젠드 프레임 워크는 config.ini를 사용하며 도트 표기법에 따라 키를 배열과 하위 배열로 나누고 분기하는 훌륭한 파서를 가지고 있습니다. config.ini는 인스턴스로로드되어 레지스트리에 저장 될 수 있습니다.

예 :

db.name 'MyName로'

dB.'이 myhost'를 개최

db.user '참고 MyUser'

db.password 'mypassword'

지금처럼이 값을 얻을 수 있습니다 :

$ config-> DB-> 이름; 또는 전체 배열 $ config-> db;

1

나는 과거에 응용 프로그램 설정을 저장하기 위해 데이터베이스 테이블을 사용했으며 매우 유용했습니다. 나는이 문제를 해결할 더 좋은 방법이 있어야한다고 생각한다. 그러나, 나는 그것을 모른다, 그래서 여기에 우리가 간다 :

  1. 열을 사용하지 않고 설정을 추가한다. "나는 이것들보다 더 많은 설정을 필요로하지 않을 것"이라고 생각하는 것은 매우 쉽습니다.하지만 당신은 그렇게 할 것입니다, 그리고 그것은 거대한, 끔찍한 혼란이 될 것입니다. 나 그거 봤었 어. VARCHAR (50)
  2. 값 - - 텍스트
  3. DATA_TYPE - VARCHAR (50)
  4. 설명 - 텍스트
  5. 이름을 int로 - ID

    • : 뭔가처럼
    • 귀하의 Colums이 있어야한다

  6. 이드는 당신의 setti 응용 프로그램 루프에서 ngs, 그냥 좋은 연습입니다.

  7. 가능한 경우 '이름'을 고유 한 열로 지정하십시오.

  8. 'text'데이터 유형이 데이터를 따르기 때문에 varchar (50)는 텍스트가 얼마나 많은지에 따라 텍스트가 조정되는 것과 상관없이 각 행마다 50자를 따로 설정합니다. 데이터가 켜기 또는 끄기 스위치처럼 단순한 경우 1 바이트 일 수 있습니다. 긴 복사 인 경우 더 작은 데이터를 동일한 크기로 만들지 않고도 쉽게 사용할 수 있습니다. (최소 크기가 1 바이트보다 클 수 있지만 이것이 작동하는 방식이라고 생각합니다. 어느 쪽이든 사전 정의 된 양을 따르는 것이 아니라 확실히 적응하는 것이 분명 좋습니다.)

  9. data_type : 필수는 아니지만 각 설정에 입력 할 수있는 데이터 유형을 제한하는 방법이 필요합니다. 이는 행 패러다임의 단점 중 하나입니다. 데이터 유형은 단지 제안 일뿐입니다. 관리자가 우연한 곳에서 잘못된 데이터를 입력 할 수있는 관리 도구를 사용할 계획이라면 테이블에 제출하고 응용 프로그램을 중단하기 전에 제안 된 값을 확인할 수 있습니다. 물론 모든 사람이 테이블에 직접 액세스 할 수 있으면 아무 것도하지 않지만 유용한 가이드 라인이 될 수 있습니다.

  10. 설명 : 이것은 의견입니다. 이를 사용하여 누가 당신을 후대에 맡길 지, 왜 당신이 한 짓을했는지, 그리고 응용 프로그램을 어떻게 망가 뜨리는지를 피하십시오.

관련 문제