I am attempting to understand whether it's to play one table for votes in excess of one argument:

table_votes
id | vote (±1) | id_user | timestamp | argument_type | argument_id


table_photos // could be argument_type = 1
id | photo_file | photo_name | etc.    


table_house // could be argument_type = 2
id | house_name | etc.

My problem begins if Let me utilize it to relabel e table value, for instance house names, I possibly could produce a table to alter suggestions according to customers agreement, for instance 3 votes on 5 total.

table_house_name_suggestion // could be argument_type = 3
id | new_house_name | old_house_name | id_user | timestamp | locked // when votes are enough

So, could this be considered a proper way or I am losing something important which guide me to utilize a election table for each argument or must i think to produce a election table for each argument?

Produce a table that is aware of all arguments (PK and FK denote primary and foreign secrets):

vote  { vote_id PK, vote, user_id, timestamp, arg_id FK(arg.arg_id) }
arg   { arg_id PK }
photo { photo_id PK FK(arg.arg_id), photo_file, photo_name, ... }
house { house_id PK FK(arg.arg_id), house_name, ... }

Observe that photo_id and house_id are really arg_ids. The only real potential inconsistency is the fact that just one arg might be both a photograph along with a house, therefore the business layer would need to make sure that that may never happen.

Now, I am a little unclear about the other half from the question. The argument_type describes maybe it's a photo or perhaps a house, right? If that's the case, argument_type = 3 indicates that house_title_suggestion is simply another kind of factor you are able to election on. It's obviously, carefully associated with the home table, but in the outlook during voting, I'd state that this really is irrelevant. If that's the case, then you definitely simply give a new table towards the mix:

house_name_suggestion { house_name_suggestion_id PK FK(arg.arg_id),
                        house_id FK(arg.arg_id), new_house_name, old_house_name, ... }

Note, however, that I have added a home_id column. While I am not 100% sure, I believe you had been while using id column to double as a principal key so that as a mention of house table, which may means each house could have only one house-title suggestion.

Side note: You've got a combination of plural and singular nouns inside your table names. I highly recommend adhering to singular. Also, the table_ prefix adds hardly any value, and it is a discomfort to utilize. Think before by using it.