소셜 네트워킹 사이트에서 일하고 있으며 사용자가 상태, 사진 및 자료를 게시 할 수있는 페이스 북과 같은 벽이 있습니다. 사용자를 위해 벽을 만드는 것은 어려운 일이 아닙니다. 나는 이런 구조를 가지고있다.페이스 북 벽 유형 요구 사항에 대한 데이터베이스 구조
Wall
{
Id,
ToUserId (BigInt) (Owner of wall)
ByUserId (The person who is posting)
Content (message, pic or something else)
more fields....
}
이 벽은 단지 사용자에 대해, 나는 그것을 다시 기운, 예를 들어, 내가 생각하고 사이트가 너무 페이지와 같은 다른 개체를해야합니다, 등 그룹 그래서 모든 개체는 그들에게 벽이있을 것이다. 각 벽마다 별도의 테이블을 만들고 싶지 않습니다.
그런 다음 ToUserId 대신 ObjectId를 사용할 수 있으며 내 구조가 이와 같을 것이라고 생각했습니다.
Wall
{
Id,
ObjectId (BigInt)(PageId/UserId/GroupId (one of them))
ByUserId (The person who is posting)
Content (message, pic or something else)
more fields....
}
내 테이블에 Increment 필드를 사용하고 있기 때문에 페이지에 사용자가 가진 ID가 동일 할 수 있습니다. 그래서 다시 문제가됩니다.
다음으로, 나는 그래서이 될 것입니다 아이디 "1U", "2U을"개체 수에 "U"를 추가하고 대한 것, 내 객체가 문자열 유형 사용자에 대한 지금
Wall
{
Id,
ObjectId (string(10))(PageId/UserId/GroupId (one of them))
ByUserId (The person who is posting)
Content (message, pic or something else)
more fields....
}
해야한다 생각 페이지는 "1P", "2P", 그룹은 "1G", "2G"입니다.
하지만 여전히 설득력이 없습니다. 전문가의 조언을 듣고 싶습니다.
업데이트
고마워, 문제, 나는 데 내가 벽의 모든 유형에 대해 하나 개의 테이블을 유지할 수있는 방법이다.
A wall for a User
A Wall for a Page
A Wall for a Group
당신은 페이스 북, 그 하나의 벽을 얻거나, 내가 그것을 구축하고자 보면, 그래서는 (어떤 페이지 또는 그룹에하거나, 사용자에게) 모든 개체에 연결해야합니다.
나는 이것이 더 이해되기를 바랍니다.
감사합니다 RPM, 나는 왜 내가이 질문을 여기에서 묻고 있는지 문자열을 피하려고 노력하고있다. – Parminder
말, 하나 이상의 개체 페이지가 있습니다. 이제 페이지에도 벽이 있습니다. 그렇게하는 방법. ?? – Parminder
사용자 유형을 구분하는 일종의 "UserType"플래그 (TINYINT)가 필요하다고 생각합니다. 1 = 사용자, 2 = 그룹, 3 = 페이지 등 – RPM1984