2010-02-19 5 views
4

SQL Server 2008 (서비스 기반 데이터베이스)을 사용하여 연락처 관리자 응용 프로그램을 개발하고 있습니다. 대부분의 연락처에는 여러 개의 전자 메일 또는 여러 전화 번호가 있습니다. 그렇다면 SQL Server에 배열을 데이터 유형으로 저장하는 방법이 있습니까? 아니면 누구든지 이런 식으로 대안을 가지고 있습니까?SQL Server 2008의 저장소 배열

+3

을 도울 수 있기를 바랍니다? –

답변

12

연락처 번호 또는 이메일 주소 당 행을 사용하여 별도의 표를 만들고 싶을 것입니다.

CREATE TABLE Contacts (contactId int, name varchar(128), etc, etc 
CREATE TABLE ContactEmail (contactId int, emailAddress varchar(128), etc 
CREATE TABLE ContactPhone (contactId int, phoneNumber varchar(128), etc 

이것은 당신이 배열을 풀고 외부 프로그램을 필요로하지 않고, 등, 추가, 제거, 개별 번호/이메일을 수정할 수 있습니다.

하지만 실제로 이것을 비정규화한 상태로 저장하려면 배열을 구분 된 문자열로 변환 할 수 있습니다. . 각 전자 메일 주소 사이에 구분 기호를 입력하고 (적절한 마술을 사용하여 주소에 이미 구분 기호가 포함되어 있지 않은지 확인한 다음) 다시 분할하십시오.

+0

세미콜론은 전자 메일 구분 기호로 사용됩니다. 사실, 일부 라이브러리는 세미콜론으로 구분 된 주소를 자동으로 지원합니다. –

3

아니오 SQL에 배열 유형이 없습니다.

phonenumbers 테이블을 작성하고 행마다 하나의 전화 번호를 저장하고 foreign 키 (예 : person_id라고 함)를 사용하여 person 테이블을 참조해야합니다.

2

다른 옵션으로 연락처 정보를 테이블의 XML 유형 필드에 XML 문서로 저장할 수 있습니다. 연락처 정보의 일부를 기반으로 사람들을 검색하지 않으려는 경우에만이 작업을 수행합니다.

예를 들어 특정 지역 번호의 전화 번호를 가진 모든 연락처를 찾는 데 관심이 있다고 생각하는 경우이 방법으로 저장하는 대신 별도의 테이블을 만들어 관련 지을 수 있습니다.

SQL Server 2008에서 실제로 XML을 쿼리 할 수 ​​있다는 것을 알고 있지만 많은 데이터에서 해당 XML을 구문 분석 할 때 연락처 목록에 얼마나 많은 레코드가 있는지에 따라 달라집니다. 별도의 테이블을 갖는 것.

+0

필자는 XML 열을 사용하여 좋은 옵션을 제공 할 수 있습니다. 그러나 데이터가 Entity As XML 외부에서 쿼리되거나 수정되어 DRI가있는 컬럼으로 승격되는 것이 주된 권장 사항입니다. – user2864740

0

테이블 변수를 사용할 수 있습니다. DDL 생성 테이블을 사용해야하지만 이것을 사용하려면 먼저 at (@)을 작성해야합니다. 이것으로 배열을 가질 수 있습니다. 그러나 테이블이 배열이기 때문에 테이블에 저장할 수 없습니다. 테이블의 내부에 데이터 구조가 있어야합니다. XML을 사용해야합니다. SQL Server 2000에는 XML을 사용하는 몇 가지 기능이 있으므로 이해합니다.

아마도 당신이 나에게 이유를 말해 줄 수 있다면 ... 나는 당신에게 더 많은 아이디어를 돌려 줄 수 있습니다!

나는 나의 answear 당신에게

이 WPF와 함께 할 수있어 무슨