Assuming a person can only submit one and only one vote, you just need teotwo tables, PlaceVotes and PostVotes, as follows
create table dbo.PlaceVotes (
Id int not null,
PlaceId int not null,
UserId int not null,
CreatedDate datetime not null,
Value int not null,
constraint unique index ux_userid (UserId, place),
constraint primary key pk_placevotes(id)
)
and create table dbo.PostVotes (
Id int not null,
PostId int not null,
UserId int not null,
CreatedDate datetime not null,
Value int not null,
constraint unique index ux_userid (UserId, postid),
constraint primary key pk_postvotes(id)
, as follows
)
create table dbo.PlaceVotes (
Id int not null,
PlaceId int not null,
UserId int not null,
CreatedDate datetime not null,
Value int not null,
constraint unique index ux_userid (UserId, place),
constraint primary key pk_placevotes(id)
)
create table dbo.PostVotes (
Id int not null,
PostId int not null,
UserId int not null,
CreatedDate datetime not null,
Value int not null,
constraint unique index ux_userid (UserId, postid),
constraint primary key pk_postvotes(id)
)
This way, the voting event is represented as one entity.
Hope this helps.
Edited after reading Miguel's comment